1

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 a manytomanyfieldなどの他のソリューションを試し ましたが、それを機能させることができませんでした(Noneと表示されただけです)

4

1 に答える 1

5

あなたの currentは、文字列ではなく をgig_musicians返しQuerySetます。

gig_musiciansこの機能を試してください:

def gig_musicians(self):
   return ', '.join([obj.name for obj in self.musician.all()])
于 2012-10-04T22:28:42.417 に答える