2012-08-07 49 views
2

Django的监护人覆盖Django的表单字段在admin.py定义两种形式,GroupManage和UserManage:https://github.com/lukaszb/django-guardian/blob/master/guardian/admin.py#L368从不同的应用程序

我想自动完成添加这两种形式,而最好的方法我假设做到这一点是覆盖组和用户的字段小部件(我的第一次尝试使用django autocomplete_light。)目标是不需要分叉django监护人。

所以在我的应用程序的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小部件。

+0

只是覆盖为模型的管理模板。 – 2012-08-07 17:51:42

+0

这会破坏使用现有的django应用程序来处理自动完成的目的。一个有效的解决方案,但不是我想要做的。 – zgohr 2012-08-07 17:57:00

+0

请注意,autocomplete-light [不支持CharField](http://www.djangopackages.com/grids/g/auto-complete/),但CharField支持在[active development]之下(https:// github .com/yourlabs/django-autocomplete-light/issues/32) – jpic 2012-08-21 12:44:13

回答

1

为类定义的字段存储在字典base_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" 
+0

这看起来确实有用。谢谢 – zgohr 2012-08-07 19:26:47

相关问题