我几天前开始使用django框架,我非常需要一些帮助来处理我的应用程序。
它由客户端,项目,管理员和管理员付款类组成,其中admin_payment包含管理员和项目的ID以及其他内容。
我的问题是如何在我的项目管理列表中显示每个“项目”的“管理员名称”?项目类本身不包含管理员ID(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的新手)
答案 0 :(得分:28)
django默认不支持显示ManyToMany
字段的内容,因为将为结果的每一行查询数据库。您可以通过adding a method to your Project
-model:
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
字段!