2012-08-07 47 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

相關問題