与Django Orm一起使用中间表格



我有这些模型:

class Region(models.Model):
    region_name = models.CharField(max_length=64)
    def __str__(self):
        return self.region_name
class GameRegionRelease(models.Model):
    region = models.ForeignKey(
        Region,
        on_delete=models.CASCADE,
        verbose_name='region'
    )
    game = models.ForeignKey(
        Game,
        on_delete=models.CASCADE,
        verbose_name='game'
    )
    release_date = models.DateField(
        verbose_name='release date',
        default=None
    )
class Game(models.Model):
    game_name = models.CharField(max_length=512)
    release_dates = models.ManyToManyField(
        Region,
        related_name='game_release_dates',
        through='GameRegionRelease'
    )

我想要获得的是每个游戏列出的每个区域,即使没有该游戏的区域数据。因此,结果将是游戏X区域,可在可用的GamereGionRelease填充区域数据。我想要类似于以下产生的东西:

SELECT *
FROM gameslist_region gr 
CROSS JOIN gameslist_game gg
LEFT JOIN gameslist_gameregionrelease grr
  ON gg.game_name = grr.game_id 
  AND gr.region_name = grr.region_id;

,但我不知道如何使用本机ORM构造在Django中表达这一点。这可能吗?我正在使用Python 3.6.4和Django 2.0.2。

##获取GamereGionRease的所有对象game_region_release = gamereGionRelease.objects.all((##访问game_namegame_region_release.game.game_name##访问region_namegame_region_release.gregion.gregion_name

最新更新