在django管理站点中为ManyToMany对象显示字段名称而不是整个对象

cha*_*oor 6 python django django-admin

我的模型如下:

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='')
Run Code Online (Sandbox Code Playgroud)

我的管理类如下:

class RetailerAdmin(admin.ModelAdmin):
    filter_horizontal = ('brand',)
Run Code Online (Sandbox Code Playgroud)

管理网站确实为我显示了多选字段,但品牌列表中的每个条目都显示为Brand object,这对我来说毫无意义.我希望每个条目都显示为该品牌的名称字段.我该怎么办?

Ale*_*kov 12

你可以添加__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
Run Code Online (Sandbox Code Playgroud)