【发布时间】:2017-05-21 09:32:20
【问题描述】:
有游戏实体,每个实体可能有 1 个或多个平台。此外,每个游戏都可以有 1 个或多个指向相关游戏的链接(具有自己的平台)。这里看起来像 models.py:
class Game(TimeStampedModel):
gid = models.CharField(max_length=38, blank=True, null=True)
name = models.CharField(max_length=512)
platforms = models.ManyToManyField(
Platform, blank=True, null=True)
...
#here is the self-referencing m2m field
related_games = models.ManyToManyField(
"self", related_name="related", blank=True)
并且此模型在 admin.py 中使用此代码提供服务:
@admin.register(Game)
class GameAdmin(AdminImageMixin, reversion.VersionAdmin):
list_display = ("created", "name", "get_platforms"... )
list_filter = ("platforms", "year",)
#I'm interested in changing the field below
filter_horizontal = ("related_games",)
formfield_overrides = {
models.ManyToManyField: {"widget": CheckboxSelectMultiple},
}
def get_platforms(self, obj):
return ", ".join([p.name for p in obj.platforms.all()])
我需要扩展 admin.py 的 filter_horizontal = ("related_games",) 部分 - 在相关游戏小部件中添加每个游戏的平台信息。它应该看起来像(游戏名称和平台列表):“Virtual Fighter (PS4, PSP, PS3)”。
应用程序使用 Django 1.7 和 Python 2.7
感谢您的关注。
【问题讨论】:
标签: python django django-admin many-to-many