3

管理者が次のようなモデルがあります。

class MyModelAdmin(admin.ModelAdmin):
    list_display  = ('invoice_code', 'total_amount', 'paid', )
    list_editable = ('paid', )
    search_fields = ('invoice_code', )

   def __init__(self, *args, **kwargs):
        super(MyModelAdmin, self).__init__(*args, **kwargs)
        self.list_display_links = (None, )

ここで、支払われるフィールドはブールフィールドであり、デフォルトではチェックされていません。私が達成したいのは、支払われたフィールドは、チェックされていないときは編集可能であり、チェックされているときは読み取り専用でなければならないということです。list_editableでこれを達成したい。これを達成することは可能ですか?もしそうなら、それを行う方法は?よろしくお願いします。

4

1 に答える 1

2

私が知る限り、list_editable ではデフォルトのフィールドしか使用できません。これらのフィールドは、これらのデフォルト フィールドに関連付けられた標準的な動作のみをサポートします。さらに、テーブル内のレコードに対して実行できる操作は互いに同等です。

行ごとにカスタム動作を実現したい場合は、チェックされている場合は編集可能で、チェックされていない場合は編集できないフィールドを返す関数をモデルに実装する必要があると思います。これは、提供するクラスといくつかの JS に基づいて、アクティブであるかどうかにかかわらず、html チェックボックスを返すだけの問題です。これを無効な属性を持つ入力チェックボックスに直接実装することもできます。

ただし、チェックボックスと指定されたフィールドを更新するには、ajax POST コマンド (Jquery などを使用) を介して値をバックエンドに更新するか、フォームの動作を変更する必要があります/保存して更新する必要があります。

お役に立てれば。

于 2012-09-30T16:18:09.127 に答える