Ошибка IntegrityError в / notes / add NOT NULL не выполнена: notes_note.created - PullRequest
3 голосов
/ 19 апреля 2020

У меня проблема, когда я добавляю функцию в django2, не могу добавить новый пост, и этот код

IntegrityError в / notes / add NOT NULL ограничение не выполнено: notes_note.created

thes views

    def note_add(request):

    # form = NoteForm()
    if request.method == 'POST':

        form = NoteForm(request.POST)

        if form.is_valid():
            new_form = form.save(commit=False)
            new_form.user = request.user
            new_form.save()
            return redirect('/notes')
    else:

        form = NoteForm()

    context={
        "form":form,
    }
    return render(request, 'add.html', context )

1 Ответ

1 голос
/ 19 апреля 2020

Вы не установили значение по умолчанию для поля created в вашей модели Note. Как следствие, значение не вводится, поэтому возникает ошибка: Вы можете установить auto_now_add=… параметр [Django -doc] на True, чтобы автоматически установить его на отметка времени создания объекта:

class Note(models.Model):
    # …
    created = models.DateTimeField(<b>auto_now_add=True</b>)

Обычно лучше изменить .instance, заключенный в форму, и разрешить форме .save() модель. Это особенно полезно, если вы (позже) добавите отношение «многие ко многим» к своей модели Note, поскольку форма обрабатывает эту логику c более прозрачным способом:

def note_add(request):
    if request.method == 'POST':
        form = NoteForm(request.POST)
        if form.is_valid():
            <b>form.instance.user = request.user</b>
            form.save()
            return redirect('/notes')
    else:
        form = NoteForm()
    context={
        'form': form,
    }
    return render(request, 'add.html', context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...