4

重複の可能性:
Django ModelAdmin の「list_display」は、ForeignKey フィールドの属性を表示できますか?

関連する別のモデルから派生したモデルの管理リスト ビューに情報を表示したいと考えています。

class Identity(models.Model):
  blocked = models.BooleanField()
  ...

class Person(models.Model):
  modelARef = OneToOneField("Identity", primary_key=True)
  descr     = models.CharField(max_length=255)
  name      = models.CharField(max_length=255)

ユーザーは、管理ページで「人」を追加/編集できる必要があります。逆インラインはサポートされていないため、管理ページに「ID」を表示してから、「Person」をインライン表示する必要があります。「アイデンティティ」には、管理ページに表示される「人」への追加情報のみが含まれます。

「Identity」の管理ページがある場合、「Identity」のlist_displayに「Person」モデルのフィールドを表示するにはどうすればよいですか?

よろしく

編集:関連する「人」を照会して必要な値を返す「アイデンティティ」にいくつかの関数を追加できますが、その場合、その列をソートする可能性はありません。

4

2 に答える 2

13

を使用しlist_displayてカスタム列を追加できます。get_queryset()行ごとにクエリを実行するのではなく、関連するオブジェクトが 1 つのクエリでのみフェッチされるように を更新することもお勧めします。

class IdentityAdmin(admin.ModelAdmin):
    list_display = ('blocked', 'person_name')

    def person_name(self, object):
        return object.person.name

    person_name.short_description = _("Person name")

    def get_queryset(self, request):
        # Prefetch related objects
        return super(IdentityAdmin, self).get_queryset(request).select_related('person')
于 2012-09-17T08:32:44.860 に答える
0

直接ではありませんが、必要なものを出力するメソッドを作成し、メソッド名をlist_displayに追加できます。list_displayのドキュメントを参照してください

于 2012-09-17T08:19:55.080 に答える