我的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)
,我希望得到该用户家中的所有密钥。
答案 0 :(得分:3)
您要找的是Key.objects.filter(id_home__id_user=user)
。这会创建2个联接,Key x Home x User
和id_user
上的过滤器。
您可以使用以下命令检查生成的sql:
print(Key.objects.filter(id_home__id_user=user).query)