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 的属性“五”:

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 回答