Django模型表格不保存

时间:2016-11-09 12:43:47

标签: python django django-forms

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

if request.method == 'POST':
    form = AbsenceForm(request.POST, instance=request.user)
    if form.is_valid():
        form.save()

forms.py

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

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

你能帮忙吗。

1 个答案:

答案 0 :(得分:4)

您正在使用instance错误。

模型表单上的

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

documentation的示例:

# 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()

为了将用户实例附加到表单,您应该在表单上设置它,而不是像this question中详述的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()