Django过滤器和相关谓词与原始谓词的比较

Django过滤器和相关谓词与原始谓词的比较,django,django-models,django-queryset,django-orm,django-filter,Django,Django Models,Django Queryset,Django Orm,Django Filter,鉴于我有这些模型: class Student(Model): pass class Exam(Model): student = models.ForeignKey(Student) is_hard = models.BooleanField(...) is_completed = models.BooleanField(...) 我如何获得符合以下标准的学生筛选查询集: 完成考试和重考的学生。(即,学生可能会有一次很难的考试和一次已完成的考试) 完成考试的学生也是一门难考

鉴于我有这些模型:

class Student(Model):
  pass

class Exam(Model):
  student = models.ForeignKey(Student)
  is_hard = models.BooleanField(...)
  is_completed = models.BooleanField(...)
我如何获得符合以下标准的学生筛选查询集:

  • 完成考试和重考的学生。(即,学生可能会有一次很难的考试和一次已完成的考试)
  • 完成考试的学生也是一门难考的考试。(同一门考试必须既难又完整)
  • 我相信后者的答案是:

    Student.objects.filter(exam__is_hard=True, exam__is_completed=True)
    
    但是我如何得到前者呢?

    使用


    这里有一些打字错误,我不确定这是怎么回事。
    Student.objects.filter(Q(exam__is_hard=True, exam__is_completed=True)|Q(exam__is_hard=True)|Q(exam__is_completed=True))