is_active
というフィールドを持つすべてのクラスの管理クラスの基本クラスを作成しました。これにより、ユーザーはis_active
フィールドとともに表のレコードを見ることができるので、どのレコードがアクティブであるかを知ることができ、編集することができます。動的リスト表示の基本管理クラス
ほとんどのクラスではname
というフィールドがありますので、コードの2行をadmin.py
に簡単に書き込むことができ、カスタマイズされた管理表現を持つことができますが、問題はクラスname
というフィールドがあるので、list_display
に別のフィールドを使用する必要があります。これらのクラスの数が多いので、フィールドの名前を動的に取得するか、list_display
にある必要があります。この問題を解決するためのアイデアは非常に高く評価されます。
models.py:
class BaseAdmin(admin.ModelAdmin):
list_display=('id','name','is_active')
list_editable = ('is_active',) # this MUST only contain fields that also are in "list_display"
search_fields=('name',)
class ClassA(models.Model):
name=models.CharField(max_length=20, blank=False, unique=True,)
is_active=models.BooleanField(default=True,)
def __str__(self):
return self.name
class ClassB(models.Model):
my_field=models.CharField(max_length=20, blank=False, unique=True,)
is_active=models.BooleanField(default=True,)
def __str__(self):
return self.my_field
admin.py
class ClassAAdmin(BaseAdmin):
pass
class ClassBAdmin(BaseAdmin):
pass
私は 'get_list_display'について知っていましたが、私の問題はどのように把握できないということです。それが10〜20クラスの場合は、別々に定義するのは気にしませんが、100〜200個のクラスについて話していますので、かなり短いものを考え出す価値があります。どのようにすべてのフィールドのリスト(各クラスに1つのフィールド)を与えることができるかわかりませんので、list_displayに適切なものを選択できます – Ibo