首页 > 解决方案 > 如何删除 Django ModelForm 上的字段?

问题描述

我想根据需要构建一个动态字段的表单,我已经尝试过这段代码但不起作用,模型表单显示所有字段。

表格.py:

class CustomModelForm(forms.ModelForm):

  class Meta:
    model = app_models.CustomModel
    fields = '__all__'


  def __init__(self, excluded_fields=None, *args, **kwargs):

    super(CustomModelForm, self).__init__(*args, **kwargs)

    for meta_field in self.fields:
      if meta_field in excluded_fields:

        # None of this instructions works
        -> del self.fields[meta_field]
        -> self.fields.pop(meta_field)
        -> self.fields.remove(meta_field)

任何人都可以帮助我吗?提前致谢。

标签: pythondjangodjango-formsmodelform

解决方案


或者,您可以使用modelform_factory?

from django.forms import modelform_factory

CustomModelForm = modelform_factory(MyModel, exclude=('field_1', 'field_2'))

这样您就可以在创建表单之前确定排除字段,并将它们传递给工厂,然后无需重写构造函数。


推荐阅读