2013-02-09 124 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的原因。

希望能帮助你。