Rubayet Mahmud
Rubayet Mahmud

Reputation: 17

IntegrityError NOT NULL constraint failed in Django

I have two models, Question and Answer. I am getting this error when I try to add an answer from user side. (adding from admin panel is okay). I have gone through few solutions in stackoverflow and other site. I everytime I deleted existing database and ran migrations, but nothing worked. Here is my code:

models.py

from django.conf import settings
from django.db import models
from django.utils import timezone


class Question(models.Model):
    author                  = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    title                   = models.CharField(max_length=300)
    optional_description    = models.TextField(blank=True, null=True)
    created_date            = models.DateTimeField(default=timezone.now)
    published_date          = models.DateTimeField(blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title


class Answer(models.Model):
    question            = models.ForeignKey('ask.Question', on_delete=models.CASCADE, related_name='answers')
    author              = models.CharField(max_length=200)
    text                = models.TextField()
    created_date        = models.DateTimeField(default=timezone.now)
    approved_answer     = models.BooleanField(default=False)


    def approve(self):
        self.approved_answer = True
        self.save()

    def __str__(self):
        return self.text

relevant section from views.py

def add_answer_to_que(request, pk):
    que = get_object_or_404(Question, pk=pk)
    if request.method == 'POST':
        form = AnswerForm(request.POST)
        if form.is_valid():
            answer = form.save(commit=False)
            answer.que = que
            answer.save()
            return redirect('ques_detail', pk=que.pk)
    else:
        form = AnswerForm()
    return render(request, 'ask/add_answer_to_que.html', {'form': form})

forms.py

class AnswerForm(forms.ModelForm):

    class Meta:
        model = Answer
        fields = ('author', 'text',)

enter image description here

Clicking writing an answer button leads to This page

enter image description here

But after adding something and clicking send leads to this error.

enter image description here

Upvotes: 0

Views: 483

Answers (1)

Farid Chowdhury
Farid Chowdhury

Reputation: 3170

The mistake is in line answer.que = que.

just change that line to answer.question = que

As you don't have any column named que in Answer table.

Hope it helps.

Upvotes: 1

Related Questions