Django: отображение ManyToManyField и общего отношения в list_display

Вопрос: Я пытаюсь получить доступ к полям в admin, используя list_display. Согласно документам: (https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display), ManyToManyFields не поддерживаются. Я обошел это, создав собственный метод: #models.py class Gig musician = models.ManyToManyField(Musician) note = models.CharField(max_length=20) def __unicode__(self): return u'%s' % (self.note) def gig_musicians(self): return self.musician.all() #admin.py class GigAdmin list_display = ('note', 'gig_musicians') Это дает мне результат, который я

Вопрос:

Я пытаюсь получить доступ к полям в admin, используя list_display. Согласно документам: (https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display), ManyToManyFields не поддерживаются. Я обошел это, создав собственный метод:

#models.py class Gig musician = models.ManyToManyField(Musician) note = models.CharField(max_length=20) def __unicode__(self): return u’%s’ % (self.note) def gig_musicians(self): return self.musician.all() #admin.py class GigAdmin list_display = (‘note’, ‘gig_musicians’)

Это дает мне результат, который я ищу, но он очень уродлив (это тоже работает для родовых отношений). Результаты выглядят так:

[<Musician: Richard Bona>, <Musician: Bobby Mcerrin>]

Я думаю, это из-за того, как я построил метод. Есть ли у вас какие-либо советы относительно того, как сделать это более элегантным, т.е. просто имена?

Я пробовал другие решения, такие как django display content of manytomanyfield, но я не мог заставить его работать для меня (он просто отображается None)

Лучший ответ:

Ваши текущие gig_musicians возвращают QuerySet, а не строку.

Попробуйте эту функцию gig_musicians:

def gig_musicians(self): return ‘, ‘.join([obj.name for obj in self.musician.all()])

Оцените статью
Добавить комментарий