django - 在单行中以多对多关系获取数据
问题描述
这些是我的模型
团队表
class Team(CommonModel):
****Other Fields****
name = models.CharField()
game = models.ManyToManyField(Game, through='Team_Game')
映射表
class Team_Game(CommonModel):
game = models.ForeignKey(Game, on_delete=models.CASCADE)
team = models.ForeignKey(Team, on_delete=models.CASCADE)
status = models.SmallIntegerField(default=1)
class Meta:
db_table = 'team_game'
游戏桌
class Game(CommonModel):
name = models.CharField(max_length=128, blank=False, null=False, unique=True)
status = models.SmallIntegerField(default=1)
我想检索 id 为 1 的团队和与之关联的游戏预期数据:team.name、other_team_cols、[game_id1、game_id2]
询问:
team_data = Team.objects.filter(id=1).values('id', 'name', 'game__name')
输出:
[
{
"id": "1",
"name": 'abc',
"game__name": "game1"
},
{
"_packageID": "1",
"name": "def",
"game__name": "game2"
}
]
预期输出:
{
"id": "1",
"name": 'abc',
"game__name": ["gam1", "gam2"]
}
解决方案
声明一个数组迭代循环并存储 game__name 值输出
team_data=[
{
"id": "1",
"name": "abc",
"game__name": "game1"
},
{
"_packageID": "1",
"names": "def",
"game__name": "game2"
}
]
arr=[]
for report in team_data :
arr.append(report["game__name"])
print(arr)
推荐阅读
- r - R:如何创建多个连续月份
- java - 如何在java中调用包含功能参数的scala方法?
- python - 如何比较两个数据框的列以添加映射
- node.js - 使用 noedjs ravendb 客户端进行 groupBy 查询
- javascript - 类属性参数的自动类型推断
- mysql - 下面给出的是我在 sql 中与计数相关的查询,我想要预期的输出
- ruby-on-rails - 有人可以解释一下each_with_index,reduce,select与OR(||)一起在代码中链接的用法吗?
- r - 删除字符串中重复两次以上的字符
- swift - iOS 9 中的 AVAudioSession.sharedInstance().setCategory
- android-intent - 如何防止在 Kotlin Android Intent 期间执行新活动中的方法