2011-03-18 76 views
7

我遇到了一个看起来可能与djangocode相关的线程,但它并没有真正的帮助。我试图保存一个模型,并抛出一个异常。我认为这可能与在我的模型中两次提到相同的外键有关。它也可能与其中一个外键字段中unique = True的定义有关。我不知道保存ModelForm错误(由于数据未验证,无法创建User_Message)

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(提交= FALSE)。男人,我认为这种说法是失败的证明。

由该接收的ModelForm POST数据包含主题和消息字段,这个数据是成功我的ModelForm验证。

难道是相关的名字,独特的=真...怎么办?

感谢

回答

23

这是你的问题:

if messageform.is_valid: 

该行必须

if messageform.is_valid(): 

基本上,错误来自一个无效的形式调用save()

+0

其实我对此感到抱歉。我应该抓住那个。我很累,并试图做太多。你今天帮了我很多,Yuji – Ben 2011-03-18 23:14:36

+0

没有概率的人!如果我没有阅读错误信息并查看代码翻出来的内容,我就没有发现这一点 - 事实证明它只是'forms.errors',而这绝不应该发生在save()处,然后我注意到()。 – 2011-03-18 23:18:48

+0

哦,哈利路亚!我陷入了同样的陷阱。 – 2013-01-01 11:47:27