【问题标题】:Django Filter And-ing of Related vs Original Predicates相关谓词与原始谓词的 Django Filter And-ing
【发布时间】:2015-08-12 17:55:13
【问题描述】:

鉴于我有这些模型:

class Student(Model):
  pass

class Exam(Model):
  student = models.ForeignKey(Student)
  is_hard = models.BooleanField(...)
  is_completed = models.BooleanField(...)

我将如何过滤符合这些条件的学生查询集:

  1. 已完成考试和硬考试的学生。 (即学生可能有一门很难的考试,另一门是已完成的)
  2. 完成考试的学生,这也是一项硬考试。 (同一个考试必须既困难又完成)。

我相信后者的回答是:

Student.objects.filter(exam__is_hard=True, exam__is_completed=True)

但我如何获得前者?

【问题讨论】:

    标签: django django-models django-queryset django-orm django-filter


    【解决方案1】:

    使用Q objects

    Student.objects.filter(Q(exam__is_hard=True, exam__is_completed=True)|Q(exam__is_hard=True)|Q(exam__is_completed=True))
    

    【讨论】:

    • 里面有一些错别字,我不太确定这是怎么回事。
    猜你喜欢
    • 2019-02-21
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 2012-05-14
    相关资源
    最近更新 更多