【发布时间】:2014-03-01 16:47:40
【问题描述】:
我有一个用于评论和新闻报道的数据库表。添加评论的表单是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 请求,然后在保存数据之前尝试验证数据。当我将打印语句添加到代码中时,我会在日志中显示表单已验证并且数据库表注释已更新,但是当我提取有关故事的数据库时,它不会显示任何与该故事相关的 cmets。
我也尝试用Story表的外键交换字段,所以在NewForm类中使用了Story表上的cmets属性而不是comment_text,但随后我在数据库表Story中没有得到任何值或评论,它只是说它验证并且它不更新 cmets 字段......但是它确实创建了一个全新的故事,其中除了字段 date_added 和 data_modified 之外的所有空字段。
显然我在这里误解了一些东西,有人可以告诉我我做错了什么吗?我已经阅读了有关查询、外键关系、相关管理器等的 django 文档,但显然我误解了一些东西......
【问题讨论】: