【问题标题】:Saving ModelForm error(User_Message could not be created because the data didn't validate)保存 ModelForm 错误(无法创建 User_Message,因为数据未验证)
【发布时间】:2011-07-18 12:44:54
【问题描述】:

我在 djangocode 遇到了一个似乎与它相关的线程,但它并没有真正帮助。我正在尝试保存模型表单,但它引发了异常。我认为这可能与在我的模型中两次引用相同的外键有关。它也可能与其中一个外键字段中 unique=True 的定义有关。我不知道

class User_Message(models.Model):
   recipient=models.ForeignKey(User, unique=True, related_name="recipients")
   subject=models.CharField(max_length=100)
   sender=models.ForeignKey(User, related_name="senders")
   message=models.TextField(max_length=500)
sent=models.DateField(auto_now_add=True)

def __unicode__(self):
    return self.subject



if request.method=="POST" and request.POST['id_message']:
    messageform=User_MessageForm(request.POST)
    recipient=[]   #receiver of mail must be a list
    recipient.append(post.user)
    if messageform.is_valid:
        message=messageform.save(commit=False)
        message.sender=user
        message.recipient=post.user
        return HttpResponse('%s %s' %(user,post.user))
        message.save()

        #send the email
        subject=messageform.cleaned_data['id_subject']
        body=messageform.cleaned_data['id_message']

        try:
            send_mail(subject, body, sender, recipient)
        except BadHeaderError:
            return HttpResponse('Invalid header found.')

在线失败,messageform.save(commit=False)。伙计,我认为该声明是失败的证明。

modelform 接收到的 POST 数据包含主题和消息字段。我的模型表单成功验证了此数据。

是相关的名称,unique=True... 是什么?

谢谢

【问题讨论】:

    标签: django django-models django-forms


    【解决方案1】:

    这是你的问题:

    if messageform.is_valid:
    

    那行需要是

    if messageform.is_valid():
    

    基本上,错误来自在无效表单上调用save()

    【讨论】:

    • 对此我真的很抱歉。我应该抓住它。我累了,想做的太多了。今天你帮了我很大的忙,Yuji
    • 没有问题的人!如果我没有读入错误消息并检查代码正在翻转的内容,我就不会注意到这一点 - 结果只是forms.errors,这不应该在save()中发生,然后我注意到了 ()。
    • 哦,哈利路亚!我落入了同样的陷阱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2015-10-02
    相关资源
    最近更新 更多