我遇到了一些只包含一个按钮的(模型)表单问题。当我尝试提交表单时,会显示以下消息:
用户 此字段是必填字段。
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'
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模型中的'user'是ForeignKey,应该是当前登录用户的User对象。我尝试使用以下行来指定:
oproep.user = request.user
那么应该发生的是: 获取当前用户的“用户”对象并将其用作“HulpOproepForm.user”。这样'HulpOproepForm.user'就是'HulpOproep.user'和一个外键。
我已经按照多个教程进行了搜索,但我找不到解决方案。如果答案是合乎逻辑的,我很抱歉,但我一直只使用Django 5天,并且有1.5个月的编程经验。
谢谢!
答案 0 :(得分:0)
感谢PatNowak和Radek!
我不知道表单是在等待用户输入而不是代码输入。我设法通过向ModelForm添加exclude来修复它。
class HulpOproepForm(ModelForm):
class Meta:
model = HulpOproep
exclude = ['user', 'time']