Сбой ограничения IntegrityError NOT NULL в Django - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть две модели, Вопрос и Ответ. Я получаю эту ошибку, когда пытаюсь добавить ответ со стороны пользователя. (добавление из админ-панели все в порядке). Я прошел через несколько решений в stackoverflow и других сайтах. Я каждый раз удалял существующую базу данных и запускал миграции, но ничего не получалось. Вот мой код:

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

соответствующий раздел от 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

Нажатие на написание кнопки ответа приводит к этой странице

enter image description here

Но после добавления чего-либо и нажатие кнопки «Отправить» приводит к этой ошибке.

enter image description here

1 Ответ

1 голос
/ 12 февраля 2020

Ошибка в строке answer.que = que.

, просто измените эту строку на answer.question = que

Поскольку у вас нет столбца с именем que в таблице Answer.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...