Python Django查询:从非直接相关模型获取值
我想从Django中不直接相关的模型中获得价值。 我有以下型号:Python Django查询:从非直接相关模型获取值,python,django,django-models,django-queryset,Python,Django,Django Models,Django Queryset,我想从Django中不直接相关的模型中获得价值。 我有以下型号: class Platform(models.Model): platform = models.CharField() class Game(models.Model): game = models.CharField() genre = models.CharField() class Link(models.Model): game = models.ForeignKey(Game)
class Platform(models.Model):
platform = models.CharField()
class Game(models.Model):
game = models.CharField()
genre = models.CharField()
class Link(models.Model):
game = models.ForeignKey(Game)
platform = models.ForeignKey(Platform)
如果游戏标题(Game.Game field)将被替换为以下模式,我如何获得游戏对象的查询集:游戏(平台)(例如“战场(PS3)”,而不需要额外点击数据库
在SQL中,它将如下所示:
SELECT
g.id,
g.game || ' (' || p.platform || ')' AS game
FROM game g INNER JOIN link l ON g.id = l.game_id
LEFT JOIN platform p ON l.platform_id = p.id;
您可以使用link_set获取游戏的反向查找
谢谢但是我只需要为每个游戏对象提供一个相关的平台名称:例如QuerySet中的2个项目:
战场(PS3),战场(PC)
-而不是战场(PS3,PC)
。我如何连接它们?那么你需要将模型链接到一起,除非你计划添加额外的字段来链接,否则你可以在游戏模型上添加外键,我会根据链接模型上是否有额外的字段来更新我的答案?
class Platform(models.Model):
platform = models.CharField()
class Game(models.Model):
game = models.CharField()
genre = models.CharField()
def save(self, *args, **kwargs):
self.title = "{0} ({1})".format(self.title, self.link__platform)
super(Game, self).save(*args, **kwargs)
class Link(models.Model):
class Meta:
unique_together = ('game', 'platform')
game = models.ForeignKey(Game)
platform = models.ForeignKey(Platform)