2012-11-24 3 views
0

뭔가 빠져있는 것 같습니다. 나는 사용자가 저작을 위해 장르를 선택할 수있게하려고 노력하고 있는데,이 장르는 저작 (쓰기) 테이블/모델의 장르 테이블/모델에 대한 외래 키로 설정됩니다.Django : 양식 데이터를 사용하여 ForeignKey를 설정하는 방법

오류 : Django AttributeError: 'str' object has no attribute '_default_manager' 이것이 지금 제가하는 방법입니다. view.py에 오류를 발생

Form.py

class post_ow(forms.Form): 
    def __init__(self, *args, **kwargs): 
     super(post_ow, self).__init__(*args, **kwargs) 
     self.fields['one_shot'].label = "Single Chapter or Multiple Chapters" 
     c = [] 
     genre = Genre.objects.filter(poem = False).order_by('name') 
     for b in genre: 
      c.append((b.id,b.name)) 
     self.fields['genre'] = forms.ChoiceField(choices = c) 

    title = forms.CharField(error_messages = {'required' : 'Title Required'}, widget= forms.TextInput(attrs={'style':'width=600px'})) 
    summery = forms.CharField(widget = forms.Textarea(), error_messages= {'required' : 'Summery Required'}) 
    genre = forms.ChoiceField(choices =()) 
    one_shot = forms.ChoiceField(choices = (
     ('one', 'Single Chapter'), 
     ('multi', 'Multiple Chapters'), 
     )) 

Model.py

class Genre(models.Model): 
    name = models.CharField(max_length=20) 
    poem = models.BooleanField() 
    ordernumber = models.IntegerField() 
    def __unicode__(self): 
     return self.name 

class Work(models.Model): 
    title = models.CharField(max_length=30) 
    summery = models.TextField() 
    user = models.ForeignKey(User) 
    date_published = models.DateField() 
    date_updated = models.DateField() 
    one_shot = models.BooleanField() 
    completed = models.BooleanField() 
    genre = models.ForeignKey(Genre) 
    TYPES = (
     ('FF', 'Fan Fiction'), 
     ('OF', 'Original Work'), 
     ('PW', 'Poetry Work'), 
     ) 
    types = models.CharField(max_length=2, choices=TYPES) 
    fandom = models.ForeignKey(Book, blank = True, null= True) 
    def __unicode__(self): 
     return self.title + '-' + self.user.email 

라인 :

g = get_object_or_404('Genre', id = form.cleaned_data['genre']) 
pw = Work(title = form.cleaned_data['title'], summery = form.cleaned_data['summery'], user = request.user, one_shot = True, types = 'pw', 
     date_published = current_date, date_updated = current_date, completed = True, genre = g) 
+0

두 가지 질문 : 당신이보고있는 오류의 종류? 제발, 우리와 공유하십시오. 왜 간단한'Form'을 사용하고'ModelForm'을 사용하지 않습니까? – marianobianchi

+0

@marianobianchi 'ModelForm'이 할 수없는 것을 처리 할 수 ​​있어야하는 몇 가지 요구 사항 (일부는 이미 추가 했음)이 있기 때문에 간단한 'Form'을 사용하고 있습니다. 지금 정확한 오류를 게시 할 것입니다. –

답변

0

변경 양식 "장르"django documentation 같은 필드는 말한다 :

genre = forms.ModelChoiceField(queryset=Genre.objects.filter(poem = False).order_by('name')) 

및 그 방법을 제거하십시오. 이 라인을 사용하면 해당 필드의 초기 값을 대체하고 필드 "one_shot"당신이 필드 인수로 전달할 수에 해당 레이블을 넣어 :

one_shot = forms.ChoiceField(
    choices = (
     ('one', 'Single Chapter'), 
     ('multi', 'Multiple Chapters'), 
    ), 
    label = "Single Chapter or Multiple Chapters" 
) 
관련 문제