Django模型表单不保存

Hen*_*ryM 1 python django django-forms

我有一个 Django 模型表单,当我使用以下内容时,它没有保存

if request.method == 'POST':
    form = AbsenceForm(request.POST, instance=request.user)
    if form.is_valid():
        form.save()
Run Code Online (Sandbox Code Playgroud)

表格.py

class DateInput(forms.DateInput):
    input_type = 'date'

class AbsenceForm(forms.ModelForm):
    class Meta:
        model = NotWorking
        exclude = ['user']
        widgets = {
            'date': DateInput()
        }
Run Code Online (Sandbox Code Playgroud)

你能帮忙吗?

Seb*_*zny 5

你用instance错了。

instance模型表单上的 应该与您所指的模型属于同一类。它在UpdateViews 中用于将表单绑定到现有实例,而不是在 上创建新实例save

文档中的示例:

# Create a form to edit an existing Article, but use
# POST data to populate the form.
>>> a = Article.objects.get(pk=1)
>>> f = ArticleForm(request.POST, instance=a)
>>> f.save()
Run Code Online (Sandbox Code Playgroud)

为了将用户实例附加到表单,您应该将它设置在表单上,​​而不是instance这个问题中详述的那样将其作为参数提供。

if request.method == 'POST':
    form = AbsenceForm(request.POST)
    form
    if form.is_valid():
        instance = form.save(commit=False)
        instance.user = request.user
        instance.save()
Run Code Online (Sandbox Code Playgroud)