在Django中,我试图从ModelForm
表单派生(子类)新表单,在该表单中我想删除一些字段(或者更确切地说,只有一些字段)。当然,显而易见的方法是这样做(基本形式来自django.contrib.auth.forms
):
class MyUserChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
fields = ('first_name', 'last_name', 'email')
但这不起作用,因为它还会在结果表单中添加/保留一个
username
字段。该字段在UserChangeForm
中明确声明。即使将username
添加到exclude
属性也无济于事。有什么适当的方法可以排除它,而我却缺少了什么?这是错误吗?有一些解决方法吗?
最佳答案
尝试这个:
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 - 如何在表单的子类的ModelForm中排除声明的字段?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3287974/