ModelForm未正确插入数据

时间:2014-03-01 16:47:40

标签: python mysql sql django

我有一个数据库表,用于评论和新闻报道。添加注释的表单是ModelForm,我只包含comment_text字段。

型号:

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属性用于NewForm类而不是comment_text,但是后来我在数据库表Story中没有得到任何值。评论,它只是说它验证并且它没有更新评论字段...然而它创建了一个全新的故事,除了字段date_added和data_modified之外的所有空字段。

显然我在这里误解了一些东西,有人能让我知道我做错了什么吗?我已经阅读有关查询,外键关系船,相关经理等的django文档,但显然我误解了一些东西......

1 个答案:

答案 0 :(得分:0)

而不是故事

comments = models.ForeignKey(Comments)

将其添加到Comment类:

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

保存评论时,您还需要为此字段设置一个值。

然后Django允许您访问这样的故事的评论(例如在视图的代码中):

story.comments.all()