12

別のフィールドの値に基づいて、Django Adminのフィールドを読み取り専用または編集不可にする方法は?私は使用readonly_fields=('amount',)しましたが、別のフィールドに基づいて管理する必要があるため、これで問題が解決することはありません。

4

3 に答える 3

28

管理者のget_readonly_fieldsメソッドをオーバーライドできます。

class MyAdmin(admin.ModelAdmin):

    def get_readonly_fields(self, request, obj=None):
        if obj and obj.another_field == 'cant_change_amount':
            return self.readonly_fields + ('amount',)
        return self.readonly_fields
于 2012-07-22T15:38:35.890 に答える
1

あるフィールドを別のフィールドに入力するには、関連するクラスprepopulated_fieldsに属性を追加する必要があります。ModelAdmin例えば:

class PostAdmin(admin.ModelAdmin):
    prepopulated_fields = {"slug": ("title",)}

関連するドキュメントはここにあります。

ただし、現在使用しているdjangoのバージョン(1.3)では、を使用するとエラーが発生するようreadonly_fieldsです。

于 2012-07-22T23:03:31.360 に答える
0

readonly_fieldsクラス属性は検証からアクセスされるため、クラスの本体で永続的にreadonly_fieldsを宣言します。

于 2012-10-09T06:50:47.863 に答える