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:

м2 дисплей

1 ответ

Решение

Вы должны определить __unicode__ (или же __str__ если вы используете метод Python 3) на ваших моделях, то:

class ASGGroup(Model):
    name = CharField(max_length=63, null=True)

    def __unicode__(self):
        return self.name

Теперь, когда ваша модель анализируется как строка, она вернет модель name поле, а не имя класса.

Другие вопросы по тегам