Django表单:提交表单时隐藏字段错误

时间:2014-09-17 17:28:17

标签: python django forms django-forms django-views

我有隐藏字段,可以在创建文章时保存,还有另一个隐藏字段,用于指示文章状态: 的 forms.py

class SavedArticles(forms.ModelForm):
    class Meta:
        model = Article
        fields =['title', 'content', 'status', 'time_created','publisher']
        widgets = {
            'status': forms.HiddenInput(),
            'time_created': forms.HiddenInput()
        }

time_createdstatus的内容将由我在后端提供:

def publish(request):
    if request.method == 'POST':
        article = SavedArticles(request.POST or None)
        if article.is_valid():      
            article = article.save(commit = False)
            article.status = 0 #have tried articles.data['status'] = 0
            article.time_created = timezone.now() #have tried articles.data['time_created'] = 0
            article.save()
            return HttpResponseRedirect(reverse('mysite:home'))

我的路线很好,但每当我觉得表格提交时,我都会收到以下错误:

(Hidden field status) This field is required.
(Hidden field time_created) This field is required.

我在做什么错误?我一整天都试过。

1 个答案:

答案 0 :(得分:1)

当指定ModelForm时,如果POST数据中存在未在fields列表/元组中指定的字段,Django将尝试根据POST中的数据来水化模型实例,无论如果未在ModelForm上指定字段。

如果没有向表单类提供初始数据,并且表单输入没有值,并且模型上的字段未指定为blank=True,则表单验证将失败。