python - 如何删除 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)
任何人都可以帮助我吗?提前致谢。
解决方案
或者,您可以使用modelform_factory
?
from django.forms import modelform_factory
CustomModelForm = modelform_factory(MyModel, exclude=('field_1', 'field_2'))
这样您就可以在创建表单之前确定排除字段,并将它们传递给工厂,然后无需重写构造函数。
推荐阅读
- python - Python:加载txt文件并形成数据框
- node.js - 实体管理器和存储库 typeorm 之间的区别
- javascript - 我将如何用 Jquery 或 javascript 重新编写这个 css?
- html - 使前 2 个标题变粘
- javascript - Vue.js 组件仅在浏览器页面刷新后更新
- ios - “使用 Bitcode 重建”和可选依赖项
- elasticsearch - 将 url 标记为已死。最后一个错误:HostUnreachableError
- concurrency - 我收到“来自 NNN-USD 的未定义汇率”
- c# - 在生产环境中使用 Fluent Asserts 增强默认的 .NET LINQ 不良异常?
- oauth-2.0 - 如何使用 Keycloak Server 内省来自公共客户端的 access_token?