【问题标题】:Excluding Fields in Django Class Based Views Not Working排除基于 Django 类的视图中的字段不起作用
【发布时间】:2013-06-18 00:36:39
【问题描述】:

男孩,感觉就像我在这里尝试了一切,但我无法正确呈现此表单(例如,使用字段的子集)。以下是相关项目(删除了额外项目):

models.py:

class Response(models.Model):
    public = models.BooleanField(default=False)
    question = models.CharField(max_length=255, default='', blank=True)

class ResponseForm(ModelForm):
    class Meta:
        model = Response
        fields = ['question']

views.py:

class ResponseCreate(CreateView):
    model = Response
    fields = ['question']

response_form.html:

<form action="" method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Create" />
</form>

我已经阅读了所有文档,他们建议在元组或列表的排列中使用excludeexcludesfieldfields,无论“公共”字段看起来如何每次都出现!想法?

感谢您的帮助!

【问题讨论】:

  • 如果您在表单中添加逗号fields = ['question',],会改变吗?
  • @ScottWoodall 这只会对元组类型产生影响,而不是列表

标签: python django django-forms


【解决方案1】:

看来您需要在视图中指定form_class

class ResponseCreate(CreateView):
    model = Response
    form_class = ResponseForm

【讨论】:

    【解决方案2】:

    只是我想提一下,您实际上并不需要单独创建 ModelForm。

    在使用模型时,通用视图真的很出色。这些通用 视图会自动创建一个ModelForm,只要它们可以工作 找出使用哪个模型类

    你可以用这个。

    class Response(models.Model):
        public = models.BooleanField(default=False)
        question = models.CharField(max_length=255, default='', blank=True)
    
    class ResponseCreate(CreateView):
        model = Response
        fields = ['question']
    

    【讨论】:

      【解决方案3】:

      您可以在班级表单中使用exclude 字段:

      class ResponseForm(ModelForm):
          class Meta:
              model = Response
              exclude = ['field_to_exclude']
      
      class ResponseCreate(CreateView):
          model = Response
          form_class = ResponseForm
      

      【讨论】:

        猜你喜欢
        • 2020-12-25
        • 2013-04-06
        • 2019-09-24
        • 1970-01-01
        • 1970-01-01
        • 2020-10-11
        • 2023-03-19
        • 2021-07-12
        • 2016-07-28
        相关资源
        最近更新 更多