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

Posted

技术标签:

【中文标题】Django 表单:提交表单时出现隐藏字段错误【英文标题】:Django Form: Hidden Field Error When Submitting Form 【发布时间】:2014-11-11 20:36:15 【问题描述】:

我有一个隐藏字段可以在创建文章时保存,还有另一个隐藏字段可以告诉文章状态: 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.

我在做什么错误?我已经尝试了一整天。

【问题讨论】:

如果time_createdstatus 的值将在您的视图中提供,您为什么要从表单中传递它们?如果没有初始值,如果这些字段未在您的模型上指定为 blank=True,则表单将无法验证。 你是对的,正如***.com/a/11261338/3009875 所解释的那样。谢谢。 不客气。很高兴能提供帮助。 您想发布一个答案以便我接受它以避免进一步的 cmets 或答案? 【参考方案1】:

在指定 ModelForm 时,如果 POST 数据中存在未在 fields 列表/元组中指定的字段,Django 将尝试根据 POST 中的数据对模型实例进行水合,无论是否ModelForm 上没有指定字段。

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

【讨论】:

以上是关于Django 表单:提交表单时出现隐藏字段错误的主要内容,如果未能解决你的问题,请参考以下文章

Django,将排除的属性添加到提交的模型表单

提交表单时出现tinyMCE错误

在文章中提交 PHP 表单时出现 Joomla 2.5 404 错误

提交表单时出现 InvalidCsrfTokenException

将表单提交到 servlet 时出现 404 错误 [重复]

为什么在提交表单时出现500错误?