在Django管理界面中显示ManyToMany对象的字段名而非整个对象
我的模型如下:
class Retailer(BaseModel):
brand = models.ManyToManyField('brands.Brand',blank=True)
class Brand(BaseModel):
name = models.CharField(max_length=100, unique=True)
website = models.URLField(max_length=500, blank=True, default='')
我的管理类如下:
class RetailerAdmin(admin.ModelAdmin):
filter_horizontal = ('brand',)
在管理网站上,我可以看到多选字段,但品牌列表中的每一项都只显示为 Brand object
,这让我很困惑。我希望每一项都能显示为该品牌的名称字段。我该怎么做呢?
1 个回答
18
你只需要在你的模型里添加一个 __unicode__
方法(如果你用的是 Python 2)或者 __str__
方法(如果你用的是 Python 3),这样就可以了,代码看起来会像这样:
class Brand(BaseModel):
name = models.CharField(max_length=100, unique=True)
website = models.URLField(max_length=500, blank=True, default='')
def __unicode__(self):
return self.name