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_created
和status
的内容由我在后台提供:
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_created
和status
的值将在您的视图中提供,您为什么要从表单中传递它们?如果没有初始值,如果这些字段未在您的模型上指定为 blank=True
,则表单将无法验证。
你是对的,正如***.com/a/11261338/3009875 所解释的那样。谢谢。
不客气。很高兴能提供帮助。
您想发布一个答案以便我接受它以避免进一步的 cmets 或答案?
【参考方案1】:
在指定 ModelForm 时,如果 POST 数据中存在未在 fields
列表/元组中指定的字段,Django 将尝试根据 POST 中的数据对模型实例进行水合,无论是否ModelForm 上没有指定字段。
如果没有向表单类提供初始数据,并且表单输入没有值并且模型上的字段未指定为blank=True
,则表单验证将失败。
【讨论】:
以上是关于Django 表单:提交表单时出现隐藏字段错误的主要内容,如果未能解决你的问题,请参考以下文章
在文章中提交 PHP 表单时出现 Joomla 2.5 404 错误
提交表单时出现 InvalidCsrfTokenException