0

我试图弄清楚如何在 Django 中执行以下 sql join 语句,而无需仅使用原始 sql。有没有办法做到这一点?

Select * from playertable, seasontable where player.id = season.player_id

这是我的模型。只是为了澄清,我在上面的查询中使用了缩写表名来澄清

class Player(models.Model): 
    name = models.CharField(max_length=200)
    team = models.CharField(max_length=3)
    position = models.CharField(max_length=3)

class PlayerSeason(models.Model):

    player = models.ForeignKey(Player)
    year = models.IntegerField()
    games_played = models.IntegerField()
    goals = models.IntegerField()
    assists = models.IntegerField()
    points = models.IntegerField()
    plusminus = models.CharField(max_length=200)
    pim = models.IntegerField()
    ppg = models.IntegerField()
    shg = models.IntegerField()
    gwg = models.IntegerField()
    otg = models.IntegerField()
    shots = models.IntegerField()
    shooting_percentage = models.DecimalField(max_digits=5, decimal_places=2)
    toi = models.CharField(max_length=200)
    sftg = models.DecimalField(max_digits=5, decimal_places=2)
    face_off = models.DecimalField(max_digits=5, decimal_places=2)

我应该如何用 Django 做到这一点QuerySet

4

2 回答 2

1

如果您只想让所有与给定赛季相关联的球员,您可以利用Django 的反向关系

当您将 ForeignKeyField 用于模型时,在本例中为 Season,该模型实例会获得一个属性,该属性允许您获取所有相关对象的查询集。

在您的示例中,您可以使用season.player_set.all().

您可以将可选参数传递related_nameForeignKeyField允许您更改季节属性的名称。

于 2013-01-17T18:28:08.783 回答
-1

有没有办法做到这一点?

不。Django 的 ORM 一次处理一个模型,并且您从两个表中获取列。对任一模型执行查询,然后访问相应字段以获取相关模型。

于 2013-01-17T16:43:32.583 回答