2013-02-09 149 views
0
class WidgetManagerAdmin(FilterSiteAdmin, OrderedModelAdmin): 
     list_display = ('title', 'position', 'is_published', 'order', 'reorder',) 
     list_editable = ('position', 'is_published',) 
     ordering = ('position','order',) 

單個對象在此的ModelAdmin「位置」是由選擇上修改更改列表Django管理

我要動態地修改這個選擇對於個人對象表示可編輯字段。所以我可以在需要時單獨將此字段設置爲read_only,並且還可以修改select中的選項數量。

感謝

做到這一點

回答

1

一種方法是設置字段readonly如果有您使用了自定義窗體類的管理類找的標準。

例子:

class YourClassAdminForm(forms.ModelForm): 
    class Meta: 
     model = YourModel 

    def __init__(self, *args, **kwargs): 
     super(YourClassAdminForm, self).__init__(*args, **kwargs) 

     # Check for your criteria to be `readonly` 
     if self.instance.whatever: 
      style = 'border:none;background-color:transparent;color:#666;cursor:default;' 
      self.fields['position].widget_attrs={'readonly': True, 'style': style} 

您還可以修改在同一個if語句的選擇。 Django管理員不會爲更改列表中的只讀字段提供樣式,這就是爲什麼我要爲該窗口小部件添加一些內聯CSS的原因。

希望能幫助你。