【问题标题】:Django Form: Hidden Field Error When Submitting FormDjango 表单:提交表单时出现隐藏字段错误
【发布时间】: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,则表单将无法验证。
  • 你是对的,正如stackoverflow.com/a/11261338/3009875 所解释的那样。谢谢。
  • 不客气。很高兴能提供帮助。
  • 您想发布一个答案以便我接受它以避免进一步的 cmets 或答案?

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-07-13
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    相关资源
    最近更新 更多