繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM