Как отправить новые поля формы с данными из Django views.py?

#django #django-models #django-views #django-forms #field

Вопрос:

Я добавляю новое поле с именем «пользователь» в модель «заказ». Я действительно совершал миграции. (Бонусный вопрос: почему в столбце sql3db был сделан «идентификатор пользователя» вместо «пользователь»? Но хорошо, я меняю form.fields[‘пользователь’] на form.fields[‘идентификатор пользователя’], как хочет машина…)

Я удаляю ненужные поля из формы в forms.py, и я пытаюсь добавить эти поля в views.py (потому что я не знаю, как отправить «пользователя» в forms.py, и я думаю, что это более безопасно, как это).

И, как я могу понять, мои новые поля отсутствуют для «заказа», когда я использую form.save(). Это поле не может быть пустым по замыслу.

скриншот

Комментарии:

1. Вы должны использовать user везде, а не user_id . Суффикс «_id» используется для доступа к исходному значению внешнего ключа, обычно идентификатору связанного объекта, но вам редко требуется доступ к этому

Ответ №1:

У вашей формы нет user поля, следовательно, это не будет работать. Что вы можете сделать, так это изменить объект, завернутый в форму, с помощью:

 if form.is_valid():
    form.instance.user = request.user
    form.instance.email = request.user.email
    order = form.save()