0
class WidgetManagerAdmin(FilterSiteAdmin, OrderedModelAdmin):
      list_display = ('title', 'position', 'is_published', 'order', 'reorder',)
      list_editable = ('position', 'is_published',)
      ordering = ('position','order',)

在此模型上,管理员“位置”是一个由选择表示的可编辑字段

我想为单个对象动态修改此选择。因此,我可以在需要时单独将此字段设为只读,并且还可以修改选择中的选项数量。

谢谢

4

1 回答 1

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 的原因。

希望对您有所帮助。

于 2013-02-10T15:42:42.273 回答