我正在试图弄清楚如何在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
?
答案 0 :(得分:1)
如果您想做的就是让所有与特定赛季相关联的球员都可以使用Django's backwards relationships
当您将ForeignKeyField用于模型时(在本例中为Season),该模型实例将获得一个属性,该属性允许您获取所有相关对象的查询集。
在您的示例中,您可以使用season.player_set.all()
。
您可以将可选参数related_name
传递给ForeignKeyField
,以便您更改季节属性的名称。
答案 1 :(得分:-1)
有办法吗?
没有。 Django的ORM一次处理一个模型,你从两个表中获取列。对任一模型执行查询,然后访问相应的字段以获取相关模型。