在 Django 中,我试图从 ModelForm
表单派生(子类)一个新表单,我想在其中删除一些字段(或者更正确地说,只包含一些字段)。当然,明显的方法是这样做(基本形式来自django.contrib.auth.forms
):
class MyUserChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
fields = ('first_name', 'last_name', 'email')
但这不起作用,因为它还在结果表单中添加/保留了一个用户名
字段。该字段已在 UserChangeForm
中显式声明。即使将用户名
添加到排除
属性也没有帮助。
是否有某种适当的方法可以排除它并且我错过了一些东西?这是一个错误吗?有什么解决办法吗?
最佳答案
试试这个:
class MyUserChangeForm(UserChangeForm):
def __init__(self, *args, **kwargs):
super(MyUserChangeForm, self).__init__(*args, **kwargs)
self.fields.pop('username')
class Meta(UserChangeForm.Meta):
fields = ('first_name', 'last_name', 'email')
这会在创建表单时动态地从表单中删除字段。
关于python - 如何排除表单子(monad)类中 ModelForm 中声明的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3287974/