Nah*_*ing 1 django admin django-orm
我正在尝试使用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')
Run Code Online (Sandbox Code Playgroud)
这给了我正在寻找的结果,但它非常难看(这也适用于通用关系).结果如下:
[<Musician: Richard Bona>, <Musician: Bobby Mcerrin>]
Run Code Online (Sandbox Code Playgroud)
我认为这是因为我如何构建方法.你对如何使这更优雅,即只是名字有任何建议吗?
我尝试了其他解决方案,例如, django显示了很多地方的内容,但我无法让它为我工作(它只显示无)
您的当前gig_musicians返回a QuerySet,而不是字符串.
试试这个gig_musicians功能:
def gig_musicians(self):
return ', '.join([obj.name for obj in self.musician.all()])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2492 次 |
| 最近记录: |