我有一个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()
}
你能帮忙吗。
答案 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()