在django的多对一关系中,如下所示:
class Parent(model.Model):
name = models.CharField(max_length=50)
class Child(model.Model):
parent = models.ForeignKey(Parent)
name = models.CharField(max_length=50)
hobby = models.CharField(max_length=50)
age = models.IntegerField(default=0)
如果我有N个不同的儿童记录标准,例如,让N = 2,标准为:
Child__name='Bob'
Child__hobby='Skiing'
Child__age__gt=16
Child__name='Billy'
Child__hobby__icontains='read'
Child__age__gte='21'
如果父母没有至少一个符合上述每个标准的孩子,我该如何过滤掉父母?
我最好以一种方式写这个,这样我一次可以应用一个过滤器,这样我就可以选择检查哪些父母不满足哪些标准。
答案 0 :(得分:1)
如果我理解,你需要对Children模型进行过滤,并获得生成的查询集的父项:
qs = Children.objects.filter(
name='billy',
age__gte=21
).values('parent')
答案 1 :(得分:0)
如果您希望获得与现有Parent
没有任何关系的Child
个对象,可以使用此项,
parent_queryset = Parent.objects.filter(child__isnull=False)
如果您希望与Child
对象达到类似效果,请尝试使用此选项
child_queryset = Child.objects.filter(parent__isnull=False)