Django 模型;用户,此字段为必填项

Django ModelForm; User, this field is required

我在使用仅包含一个按钮的(模型)表单时遇到了一些问题。当我尝试提交表单时显示此消息:

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模型中的'user'是一个ForeignKey,应该是当前登录用户的User对象。我尝试使用以下行指定它:

oproep.user = request.user

所以应该发生的是: 获取当前用户的 'User' 对象并将其用作 'HulpOproepForm.user'。这样 'HulpOproepForm.user' 就是 'HulpOproep.user' 和一个外键。

我已经按照多个教程进行了搜索并四处搜索,但找不到解决方案。如果答案合乎逻辑,我很抱歉,但我使用 Django 仅 5 天,并且有 1.5 个月的编程经验。

谢谢!

谢谢 PatNowak 和 Radek!

我不知道表单是在等待用户输入而不是代码输入。我设法通过向 ModelForm 添加 exclude 来修复它。

class HulpOproepForm(ModelForm):
    class Meta:
        model = HulpOproep
        exclude = ['user', 'time']