django отображение содержимого manytomanyfield
Я начал использовать Django framework всего несколько дней назад, и мне отчаянно нужна помощь с моим приложением.
Он состоит из классов оплаты клиента,проекта,администратора и администратора,где admin_payment содержит идентификаторы администраторов и проектов среди прочего.
мой вопрос в том, как я могу отобразить "имя администратора" каждого "проекта" в моем списке проектов администратора? сам класс проекта не содержит идентификаторы администратора (Admin_Payment делает)
В настоящее время у меня есть следующая структура: (полосатый вниз)
models.py
class Admin(models.Model):
admin_name = models.CharField(unique = True, blank = False, null = False, max_length = 128, verbose_name = u'admin full name')
def __unicode__(self):
return self.admin_name
class Meta:
ordering = ('id',)
verbose_name = u'Admin Info'
class Project(models.Model):
client = models.ForeignKey(Client, verbose_name = u'Client')
description = models.ForeignKey(Description, verbose_name = u'project description')
admins = models.ManyToManyField(Admin, verbose_name = u'Administrators', through = 'Admin_Payment')
class Admin_Payment(models.Model):
admin = models.ForeignKey(Admin, verbose_name = u'Administrator')
project = models.ForeignKey(Project, verbose_name = u'project')
admin.py (полосатый вниз)
class AdminInline(admin.TabularInline):
model = Admin
class ProjectAdmin(admin.ModelAdmin):
radio_fields = {'position': admin.HORIZONTAL, 'solution': admin.HORIZONTAL}
inlines = [AdminInline, ]
list_display = ['client','description','admin_name']
клиенты и описания отображаются правильно в списке проектов, но имена администраторов не
любая помощь приветствуется (извините, если я опубликовал что-то , что не имеет смысла, я новичок в python и django)
1 ответов
отображение содержимого ManyToMany
поле не поддерживается по умолчанию django, потому что база данных будет запрашиваться для каждой строки результатов. Вы можете отобразить его самостоятельно добавление метода к вашему Project
модель:
class Project(models.Model):
....
def admin_names(self):
return ', '.join([a.admin_name for a in self.admins.all()])
admin_names.short_description = "Admin Names"
и поставить admin_names
в своем list_display
поля!