Django多对一加入

时间:2016-10-09 19:11:53

标签: python django join

我的Django应用程序中的许多地方都有一对多的关系。 例如,我有用户,家和密钥:

class User(Model):
    id_user = models.AutoField(primary_key=True)
class Home(Model):
    id_home = models.AutoField(primary_key=True)
    id_user = models.ForeignKey('user.User', models.DO_NOTHING, db_column='id_user_home')
class Key(Model):
    id_key = models.AutoField(primary=True)
    id_home = models.ForeignKey('home.Home', models.DO_NOTHING, db_column='id_home_key')

从会话开始,我user = User(1),我希望得到该用户家中的所有密钥。

1 个答案:

答案 0 :(得分:3)

您要找的是Key.objects.filter(id_home__id_user=user)。这会创建2个联接,Key x Home x Userid_user上的过滤器。

您可以使用以下命令检查生成的sql:

print(Key.objects.filter(id_home__id_user=user).query)