Django 在列表视图中显示其他模型的属性

Django 在列表视图中显示其他模型的属性,django,django-models,django-admin,Django,Django Models,Django Admin,我有以下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):

我有以下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的属性“five”:

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上


但是如何在管理列表视图中显示属性呢?

您可以使列表显示元素成为一个函数,它将对象作为参数

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,但如果不能,您可以创建一个查询。

创建查询意味着它必须为每一行创建查询。。。我想避免我误解的那个。如果我理解正确,您希望从ModelA显示ModelC的属性。ModelA和ModelC之间的关系在ModelB中,对吗?如果有很多ModelBs使用相同的ModelA作为对象,但是不同的ModelC对象呢?