如何检查一个对象 (X) 是否映射到另一个对象 (Y),如果是,请检查对象 (Y) 的某个字段是否为 false



所以我的models.py中有这些类:

class Result(models.Models):
student = models.OneToOneField(Student, on_delete=models.CASCADE)
passed = models.BooleanField(blank=False, default=False)
class Student(models.Models):
name = models.CharField(max_length=25, blank=False)

所以我需要以这样一种方式过滤Student,使Student.objects.filter()返回的值为:如果一个Student映射到一个Result并且该Resultpassed = False那么它将返回该对象,即使它没有映射到Result,我仍然需要获取该Student(因为并非所有学生都有Result(。

可以使用相关访问器过滤和 Q 对象 在您的情况下:

from django.db.models import Q
Student.objects.filter(Q(result__passed=False) | Q(result__isnull=True))

最新更新