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

このmodelAdminの「position」は、selectで表される編集可能なフィールドです。

個々のオブジェクトに対してこの選択を動的に変更したいと思います。したがって、必要に応じてこのフィールドを個別にread_onlyにすることができ、selectのオプションの数を変更することもできます。

ありがとう

4

1 に答える 1

1

readonlyこれを行う 1 つの方法は、管理者クラスのカスタム フォーム クラスを使用して、探している基準があるかのようにフィールドを設定することです。

例:

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 に答える