Python 从其他应用程序重写Django表单字段

Python 从其他应用程序重写Django表单字段,python,django,django-widget,Python,Django,Django Widget,Django Guardian在admin.py中定义了两种表单,即GroupManager和UserManager: 我想在这两个表单中添加自动完成功能,我认为实现这一功能的最佳方法是覆盖组和用户的字段小部件(我的第一次尝试使用django autocomplete_light)。目标是不需要使用django guardian 因此,在我的应用程序的models.py中,我添加了以下代码 GroupManage.__class__.group = forms.CharField(max_len

Django Guardian在admin.py中定义了两种表单,即GroupManager和UserManager:

我想在这两个表单中添加自动完成功能,我认为实现这一功能的最佳方法是覆盖组和用户的字段小部件(我的第一次尝试使用django autocomplete_light)。目标是不需要使用django guardian

因此,在我的应用程序的models.py中,我添加了以下代码

GroupManage.__class__.group = forms.CharField(max_length=81,
    error_messages={'does_not_exist':
    "This group does not exist!"}, widget=ChoiceWidget(True))

我也尝试过使用setattr,但没有效果。在django shell中,它的行为就像这样,应该可以正常工作,但是当加载管理页面时,使用默认的CharField小部件恢复旧的组变量。

为类定义的字段存储在dictionary
base\u fields

GroupManage.base_fields['group'] = forms.CharField(max_length=81,
error_messages={'does_not_exist':
"This group does not exist!"}, widget=ChoiceWidget(True))
有时,更改字段属性可能比替换整个字段更容易:

GroupManage.base_fields['group'].help_text = "New help text"

只需覆盖模型的管理模板。这将破坏使用现有django应用程序处理自动完成的目的。这是一个有效的解决方案,但不是我想要做的。请注意,autocomplete light尚未启用,但CharField的支持仍在进行中