Django: имя многих для многих элементов в интерфейсе администратора
У меня есть поле "многие ко многим", которое я отображаю в админ-панели django. Когда я добавляю несколько элементов, все они отображаются как "объект ASGGroup" в селекторе дисплея. Вместо этого я хочу, чтобы они отображались как любое поле ASGGroup.name. Как мне это сделать?
Моя модель выглядит так:
class Thing(Model):
read_groups = ManyToManyField('ASGGroup', related_name="thing_read", blank=True)
class ASGGroup(Model):
name = CharField(max_length=63, null=True)
Но то, что я вижу, отображает виджет m2m:
1 ответ
Решение
Вы должны определить __unicode__
(или же __str__
если вы используете метод Python 3) на ваших моделях, то:
class ASGGroup(Model):
name = CharField(max_length=63, null=True)
def __unicode__(self):
return self.name
Теперь, когда ваша модель анализируется как строка, она вернет модель name
поле, а не имя класса.