我有一个类似于这个的模式(显然这个是简化的)
class Pet(models.Model):
name = TextField()
date_vaccinated = DateTimeField(null=True) # null indicates no vaccination
owner = ForeignKey(Person, related_key="pet")
class Person(models.Model):
name = TextField()
people_with_a_vaccinated_pet_named_rex =
Person.objects.filter(pet__date_vaccinated__isnull=False, pet__name="Rex")
正如最后一行所指出的,我正在努力寻找所有有一只宠物叫雷克斯的人,它也接种了疫苗。 我写的查询将找到所有有一只名叫rex的宠物和一只接种了疫苗的宠物的人(不一定是同一只宠物…)
有没有一种方法可以在同一个单域关系上使用多个条件进行查询
另外,我要写的真正的查询更类似于以下内容:
Person.objecs.filter(pet__class1__date__isnull=False, pet__class1__class2__class3__name="blabla")
我只想通过日期不为空的class1实例到达class3
情况已经是这样了。在这个过滤器中,您对相同的一对多关系进行查询
事实上,你的问题是:
转换为如下所示的数据库查询:
因此,我们在
Pet
模型上加入one,并在上过滤相同的Pet
对于第二种情况也是如此,它将在
pet
、class1
、class2
和class3
上连接一次,因此在相同的相关对象上执行过滤条件如果要查询(可能)不同的对象,可以使用以下选项进行筛选:
相关问题 更多 >
编程相关推荐