Question

views.py

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']

my form1 is getting validated and getting saved in backend but form2 is not getting saved in backend. The error is in line "reply.person=request.user" the error is "crave_comments.crave_id may not be NULL" please help me out i want to save the comment i.e reply for that perticuler crave_made i.e post

Was it helpful?

Solution

While saving and createing reply, you need to assign crave attribute as well.

Update your code to

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

Assuming you want to save with crave_made created just before.

OTHER TIPS

Have you tried using commit=True, when you save the form? The error you are getting is telling you that the reply needs to be saved before you can add a foreign key relationship.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top