2011-03-18 28 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

相關問題