[英]Django ModelForm; User, this field is required
我在仅包含一个按钮的(模型)表单中遇到一些问题。 当我尝试提交表单时,将显示以下消息:
用户此字段为必填项。
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'
视图如下所示:
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,应为当前登录用户的User对象。 我尝试使用以下行来指定:
oproep.user = request.user
因此,应该发生的事情是:获取当前用户的“用户”对象,并将其用作“ HulpOproepForm.user”。 这样,“ HulpOproepForm.user”就是“ HulpOproep.user”和外键。
我遵循了多个教程并进行了搜索,但是找不到解决方案。 很抱歉,如果答案是合乎逻辑的,但是我仅使用Django已有5天,并且拥有1.5个月的编程经验。
谢谢!
感谢PatNowak和Radek!
我不知道表单正在等待用户输入而不是代码输入。 我设法通过添加排除到ModelForm来解决它。
class HulpOproepForm(ModelForm):
class Meta:
model = HulpOproep
exclude = ['user', 'time']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.