如何在Django admin的“列表显示”中显示外键和多对多字段?

如何在Django admin的“列表显示”中显示外键和多对多字段?,django,django-admin,Django,Django Admin,如何在Django admin中显示外键和多对多字段 型号。py: class Book(models.Model): title = models.CharField(max_length=150, blank=False) class Character(models.Model): book = models.ForeignKey(Book, on_delete=models.CASCADE, related_name='character') name = mo

如何在Django admin中显示外键和多对多字段

型号。py:

class Book(models.Model):
    title = models.CharField(max_length=150, blank=False)

class Character(models.Model):
    book = models.ForeignKey(Book, on_delete=models.CASCADE, related_name='character')
    name = models.CharField(max_length=50)

class Author(models.Model):
    book = models.ManyToManyField(Book, related_name='author')
    name = models.CharField(max_length=50)
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'characters', 'authors')

    def characters(self, obj):
        ???

    def authors(self, obj):
        ???
admin.py:

class Book(models.Model):
    title = models.CharField(max_length=150, blank=False)

class Character(models.Model):
    book = models.ForeignKey(Book, on_delete=models.CASCADE, related_name='character')
    name = models.CharField(max_length=50)

class Author(models.Model):
    book = models.ManyToManyField(Book, related_name='author')
    name = models.CharField(max_length=50)
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'characters', 'authors')

    def characters(self, obj):
        ???

    def authors(self, obj):
        ???

您可以获取相关的
字符
s/
作者
s,然后在逗号分隔的列表中加入名称:

class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'characters', 'authors')

    def characters(self, obj):
        return ', '.join([c.name for c in obj.character.all()])

    def authors(self, obj):
        return ', '.join([a.name for a in obj.author.all()])

由于
related\u name
是相反的关系,并且可以有多个
字符
s/
作者
s,因此将这些字符命名为复数是有意义的。

如何显示?用逗号分隔的列表还是什么?