Django 在列表视图中显示其他模型的属性
我有以下3种型号: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):
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对象呢?