【发布时间】:2021-12-24 02:34:33
【问题描述】:
我有以下型号:-
class Player(models.Model):
first_name = models.CharField()
etc.
class Game(models.Model):
date = models.DateField()
etc.
class GameMembership(models.Model):
player = models.ForeignKey(Player, related_name="memberships")
game = models.ForeignKey(Game, related_name="memberships")
available = models.BooleanField(default=False)
我创建了一个 ModelViewSet 来返回所有玩家,但我希望能够为列表中的每个玩家返回他们的游戏成员列表。我可以很容易地做到这一点,但它返回的数据如下所示:-
{
"id": "1",
"memberships": [
{
"available": True,
"game": {
"date": "a date",
etc.
}
},
{
"available": False,
"game": {
"date": "a date",
etc.
}
}
]
}
但我想对 API 用户隐藏我的数据库的“成员资格”方面并返回类似的内容:-
{
"id": "1",
"games": [
{
"available": True,
"date": "a date",
etc.
},
{
"available": False,
"date": "a date",
etc.
}
]
},
所以我想从 GameMembership 模型中获取一个(或两个)字段,并将其与 Game 模型中的所有字段结合起来,但至关重要的是,我希望将它们全部放入返回结果中的一个字典中。我知道我可以简单地在 GameMembershipSerializer 上序列化 Game,但这意味着我将返回:-
{
"id": "1",
"games": [
{
"available": True,
"game": {
"date": "a date",
etc.
}
},
{
"available": False,
"game": {
"date": "a date",
etc.
}
}
]
}
这没有任何意义,因为用户必须访问 results['games'][1]['game'] 之类的东西,这似乎是错误的。
我以为我可以通过在 GameMembershipSerializer 上使用 to_representation 来做到这一点,但我想不通。
有什么想法吗?
【问题讨论】:
标签: django django-models django-rest-framework django-queryset