「lock_slug」のような他のフィールド値に応じて、slug フィールドを read_only にしたい。
2つの条件があります。
1) "lock_slug" の値が false の場合、slug フィールドはフィールド "title" から直接事前入力されます。
prepopulated_fields = {"slug": ("title",),}
2) "lock_slug" の値が true の場合、slug フィールドは読み取り専用になります。
def get_readonly_fields(self, request, obj = None):
if obj and obj.lock_slug == True:
return ('slug',) + self.readonly_fields
return self.readonly_fields
これら 2 つは独立しては問題なく動作しますが、両方を使用すると問題が発生します。
編集時に get_readonly_fields() を追加しようとすると、prepopulated_fields が原因でエラーが発生します。これら 2 つのクラッシュは互いに発生します。
管理者側で両方を機能させるための解決策があります。
以下のリンクも参照します
別のフィールドの値に基づいて、Django Admin でフィールドを読み取り専用にする
django管理者は、objを変更するときにフィールドを読み取り専用にしますが、新しいobjを追加するときに必要です
しかし、これら2つを同時に機能させることはできません。
ありがとう、
ミーナクシ