0

私は次の3つのモデルを持っています:

class ModelA(models.Model):
    one = models.Charfield()
    two = models.Charfield()
    #etc

class ModelB(models.Model):
    modela = models.ForeignKey(ModelA)
    modelc = models.ForeignKey(ModelC)
    #etc

class ModelC(models.Model):
    five = models.Charfield()
    six = models.Charfield()
    #etc

ModelA の管理者がいます。

class ModelAAdmin(admin.ModelAdmin):
    list_display = ('one', 'two')

私が達成しようとしているのは、ModelA の管理リスト ビューに ModelC の属性「5」を表示することです。

list_display = ('one', 'two', 'five')

次のエラーが表示されます。

ModelAAdmin.list_display[2], 'five' is not a callable or an attribute of 'ModelAAdmin' or found in the model 'ModelA'.

正しい...そして私は理解しています...ForeignKeyはModelAではなくModelBにあるためです。

しかし、管理リスト ビューに属性を表示するにはどうすればよいですか?

4

1 に答える 1

0

list_display 要素を、オブジェクトをパラメーターとして受け取る関数にすることができます。

def get_five(obj):
    return ("%s") % obj.modelc.five

get_five.short_description = 'five'

class ModelAAdmin(admin.ModelAdmin):
    list_display = ('one', 'two', get_five)

そのように modelc にアクセスできるかどうかはわかりませんが、そうでない場合はクエリを作成できます。

于 2013-02-07T15:12:16.820 に答える