У меня возникли проблемы с (модель) формой, состоящей всего из одной кнопки. Когда я пытаюсь отправить форму, это сообщение отображается:Django ModelForm; Пользователь, это поле обязательно
пользователь Это поле обязательно для заполнения.
ModelForm выглядит следующим образом:
from django.forms import ModelForm
from .models import HulpOproep
class HulpOproepForm(ModelForm):
class Meta:
model = HulpOproep
fields = ['user', ]
Модель выглядит следующим образом:
class HulpOproep(models.Model):
user = models.ForeignKey(User)
time = models.DateTimeField(auto_now_add=True, verbose_name='Tijd')
def __str__(self):
return '%s %s' % (self.user.username, str(self.time))
def username(self):
return self.user.username
def first_name(self):
return self.user.first_name
def last_name(self):
return self.user.last_name
class Meta:
verbose_name = 'Hulp Oproep'
verbose_name_plural = 'Hulp Oproepen'
The View выглядит следующим образом:
def verzend_oproep(request):
if request.method == 'POST':
form = HulpOproepForm(request.POST)
if form.is_valid():
oproep = form.save(commit=False)
oproep.user = request.user
oproep.save()
return redirect('portal/index/')
else:
form = HulpOproepForm()
return render(request, 'portal/verzend_oproep.html', {'form': form})
Шаблон:
{% extends "base.html" %}
{% block head %}
<title>Zorggroep | Hulp Oproep</title>
{% endblock %}
{% block body%}
<h1>Verstuur Hulpoproep</h1>
<form method="POST" class="post-form">{% csrf_token %}
{{ form.as_P }}
{{ form.errors }}
<button type="submit" class="save btn btn-default">Verstuur</button>
</form>
{% endblock %}
«Пользователь» в модели HulpOproep является ForeignKey и должен быть в настоящее время зарегистрированным пользователем пользовательским объектом. Я попытался определить это с помощью строки:
oproep.user = request.user
Так что должно случиться: Получить объект «User» текущего пользователя и использовать его в качестве «HulpOproepForm.user». Таким образом, «HulpOproepForm.user» является «HulpOproep.user» и внешним ключом.
Я следил за несколькими учебниками и искал вокруг, но я не могу найти решение. Извините, если ответ логичен, но я использую Django всего 5 дней и имею 1,5 месяца опыта программирования под моим поясом.
Спасибо!
Как я вижу, ваша форма требует заполнения поля пользователя. Это означает ввод от клиента, а не от кода. – PatNowak
Поскольку вы получаете от пользователя запрос, зачем вам это нужно как поле в форме? Если вам нужно показать текущего пользователя, вы можете либо a) показать request.user в html-шаблоне, либо b) предварительно заполнить форму с данными только для чтения о пользователе. – Radek