Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django查询:从非直接相关模型获取值_Python_Django_Django Models_Django Queryset - Fatal编程技术网

Python 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)

我想从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)
    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)