1
我正在尝试使用list_display访问admin中的字段。根据文档:(https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display),不支持ManyToManyFields。我已经通过创建这样一个自定义的方法解决此得到:Django:在list_display中显示ManyToManyField和一般关系
#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 a manytomanyfield,但我无法得到它的工作对我来说(它只是显示无)
谢谢!这适用于我的大多数模型。对于音乐家而言,名称字段与个人即OneToOne的关系,即'name = models.OneToOneField(Individual)',所以当我使用你的代码时,我得到了错误:expect string,Individual found。我试图将其修改为'([obj.individual.name obj in self.musician.all()])''但这并不起作用。有什么建议? –
更新:我收到此错误的任何字段不是CharField –
您的OneToOne关系有点奇怪。你的音乐家应该有一个像“个人= models.OneToOneField(个人)”的字段。如果你的个人模型有一个像name = models.Charfield(...)这样的名字字段,那么你的代码就可以工作。 – Jingo