2009-12-18 5 views
0

내가이 본질적으로 유사하다 몇 게시물을 발견했습니다하지만 그들은 그래서 여기에 100 % 명확 진행되지 않은 깨끗한 modelform 앨범을 업로드하십시오. 이 앨범이 아티스트에게 고유 한 것인지 확인하려면 양식 (AlbumForm)을 깨끗하게 정리하고 싶습니다. 이 같은장고는

AlbumForm 외모 :

class AlbumForm(ModelForm): 
    class Meta: 
    model = Album 
    exclude = ('slug','artist','created','is_valid', 'url', 'user', 'reported') 

    def clean_name(self): 
    super(AlbumForm, self).clean() 
    cd = self.cleaned_data 
    try: 
     Album.objects.get(slug=slugify(cd['name']), artist=artist) 
     raise forms.ValidationError("Looks like an album by that name already exists for this artist.") 
    except Album.DoesNotExist: 
     pass 

    return cd 

는 그래서 내가하고 싶은 일의 라인을 따라 뭔가.

내 질문은 : artist 개체를 내보기에서 양식으로 전달할 수 있습니까? 인스턴스를 clean 메서드에서 사용할 수 있습니까?

나는 ModelForm__init__ 메서드를 재정의하는 방법을 찾고 있지만 어떻게해야할지 확신이 서지 않습니다.

답변

4

기본 제공 메타 옵션이 unique_together 인 모델을 사용하는 것이 더 좋습니다.

def Album(models.Model): 
    ... 

    class Meta: 
    unique_together = ("artist_id", "title") 
+0

내가이 노력하고있어 있지만 작동하지 않는 것 : 당신이 모델 Album을 가지고있는 경우에

는, 그때는 아마 같은 것을 할 수 있습니다. 내 "아티스트"필드는 아티스트 모델에 대한 ForeignKey입니다. 그래서 저는 : unique_together = ('아티스트', '슬러그') - 이것이 어떻게 작동하는지 100 %가 아닙니다. – tsoporan

+0

'unique_together = ("artist_id", "slug")'시도해보십시오. 'unique_together'가 ForeignKeys와 함께 작동하는지 확실하지 않습니다. –

+0

오, 바보 같았 어, 데이터베이스 레벨 변경 (마이 그 레이션을 실행하지 않았다)을 잊어 버렸다. 작동합니다. 덕분에 훨씬 좋습니다. – tsoporan

관련 문제