2014-03-01 3 views
0

저는 의견과 뉴스 기사를위한 데이터베이스 테이블을 가지고 있습니다. 코멘트를 추가하는 폼은 ModelForm이며 comment_text 필드 만 포함합니다.ModelForm이 데이터를 올바르게 삽입하지 않습니다.

모델 :

class Story(models.Model): 
    date_added = models.DateTimeField(auto_now_add=True) 
    date_modified = models.DateTimeField(auto_now=True) 
    title = models.CharField(max_length=150) 
    description = models.CharField(max_length=2000) 
    story_text = models.TextField() 
    comments = models.ForeignKey(Comments) 

    def __unicode__(self): 
     return self.title 

class Comment(models.Model): 
    date_added = models.DateTimeField(auto_now_add=True) 
    date_modified = models.DateTimeField(auto_now=True) 
    emailOnReply = models.NullBooleanField(blank=True, null=True) 
    comment_text = models.TextField() 

    def __unicode__(self): 
     return self.comment_text 

형태 :

class NewComment(ModelForm): 
    """ Form for adding a new comment """ 
    class Meta: 
     model = Comment 
     fields = ['comment_text'] 
     widgets = { 
      'comment_text': Textarea(attrs={'class': 'form-control'}), 
     } 

뷰 바로 POST 요구가 수신되는 경우 확인하고이 데이터를 저장하기 전에, 데이터의 유효성을 검증하기 위해 시도한다. 내가 코드에 print 문을 추가하면 양식의 유효성이 검사되고 데이터베이스 테이블 주석이 업데이트되지만, 기사에 대한 데이터베이스를 추출하면 기사와 관련된 모든 주석이 표시되지 않습니다.

Story 테이블의 외래 키와 필드를 교환하려고 했으므로 Story 테이블의 comments 특성이 comment_text 대신 NewForm 클래스에서 사용되지만 데이터베이스 테이블의 모든 값을 가져 오지 않습니다. Story 또는 Comment를 추가하면 주석 필드가 업데이트되고 유효성 검사가 수행됩니다. 그러나 date_added 및 data_modified 필드를 제외한 모든 빈 필드가 완전히 새로운 새로운 스토리를 작성합니다.

분명히 여기에 뭔가를 오해하고있는 사람이 내게 어떤 일이 잘못되었는지 생각해 볼 수 있습니까? 나는 등등 만드는 쿼리, 외래 키 관계 선박, 관련 관리자와 대한 장고 문서를 읽게 하지만 분명히

comments = models.ForeignKey(Comments) 

가이 추가 가진 스토리의 대신 뭔가 ...

답변

0

오해 메신저 주석 클래스 :

story = models.ForeignKey(Story, related_name='comments') 

또한 메모를 저장할 때이 필드의 값을 설정해야합니다.

장고 다음 (뷰의 코드에서 예를 들어)이 같은 이야기에 대한 코멘트에 액세스 할 수 있습니다 :

story.comments.all() 
+0

감사 답변을 위해, 병은 –

+0

을 그것을 밖으로 시도이 몇 번 시도 한 후 나는 네가 의미하는 것을 얻지 못한다. 조금 더 설명 할 수 있겠 니? Story 테이블에 주석 속성이없고 주석을 포함하는 주석 테이블의 스토리 특성 만 갖기를 원하십니까? 내가 양식을 검증하지 못했다면, 위의 –

+0

에 명시된 이야기 외래 키 특성에 데이터를 삽입하려고하는데, form.comments.errors 필드를 추가했지만 아무 것도 인쇄되지 않고 있습니다. 다른 양식에 사용하고 잘 작동하지만 이번에는 아무것도 출력하지 않습니다. –

관련 문제