2014-04-17 72 views
0

views.py秒形式是沒有得到驗證的Django

def crave_view(request): 
    if (request.method=="POST"): 

     form1=CraveDataForm(request.POST, request.FILES) 

     form2 = CraveReplyForm(request.POST, request.FILES) 
     print form1 
     print form2 

     if form1.is_valid() and form2.is_valid(): 

      crave_made = form1.save(commit=False) 
      crave_made.person = request.user 
      crave_made.save() 
      reply = form2.save(commit=False) 
      reply.person=request.user 
      reply.save() 

      #login(request,crave_made.username,form1.clean_password2()) 
      messages.success(request, 'You Registered Successfully') 

      #return HttpResponseRedirect('/details/') 
     else: 
      print form1 
      print form2 

      messages.error(request, 'Please enter all required fields')      
    else:      
     form2 = CraveReplyForm() 
     form1=CraveDataForm() 


    return render(request, "crave/crave.html", { 'form1' : form1, 'form2' : form2 }) 

models.py

class crave_data(models.Model): 
    person = models.ForeignKey(User) 
    post=models.TextField(blank = True,null = True) 
    date= models.DateTimeField(auto_now_add=True, blank=True) 
    def __unicode__(self): 
     return self.post 



class comments(models.Model): 

    crave=models.ForeignKey(crave_data) 
    reply=models.CharField(max_length=1000, blank = True,null = True) 
    date= models.DateTimeField(auto_now_add=True, blank=True) 
    def __unicode__(self): 
     return self.reply 

forms.py

class CraveDataForm(forms.ModelForm): 
    class Meta: 
     model = crave_data 
     exclude=['date', 'password1', 'password2', 'username', 'person'] 

class CraveReplyForm(forms.ModelForm): 
    class Meta: 
     model = comments 
     exclude=['date', 'crave', 'password1', 'password2', 'username'] 

我的Form1將得到驗證,並得到保存在後臺但form2沒有保存在後端。錯誤是在行「reply.person = request.user」的錯誤是「crave_comments.crave_id可能不是NULL」 請幫我出我想保存評論即回覆該perticuler crave_made即後

回答

0

保存並創建reply時,還需要指定crave屬性。

更新您的代碼以

 reply = form2.save(commit=False) 
     reply.person=request.user 
     reply.crave = crave_made 
     reply.save() 

假設你想保存與之前創建crave_made

+0

非常感謝它的正確工作,,,,,,那邊的問題到底是什麼,,,,,,,,,,,,,,,,, – Gaurav

+0

@ user3298313,而對於'不應該'NULL'。 – Rohan

+0

非常感謝Rohan ,,,,,,,,,, – Gaurav

0

有您在保存表單時嘗試使用commit = True?您收到的錯誤是告訴您需要先保存回覆,然後才能添加外鍵關係。