我如何在 Django 中进行此查询?

How can I make this query in Django?

我有这些字段(test_type, status, begin_time, and_time)。status字段有三个状态(012)。 我想创建一个查询集,其中:

(test_type = 'difficult') and 
(if status=1 and begin_time + 2x(end_time - begin_time) < timezone.now()) or
(if status=2 and end_time < timezone.now()) 

然后 select 这些字段。如果状态 state=0 我不想 select 该字段。 我怎样才能用 Django ORM 制作这个查询集?

你将不得不在 Django 中使用 Q 对象,

Model.objects.filter((Q(status=1) & Q(begin_time < computed_value_here)) | (Q(status=2) & Q(end_time < computed_value_here)), test_type='difficult')

像下面这样的东西应该可以工作。您需要为 "twice_end_time" 创建注释,因为 Django 不支持过滤器中的那种计算

Model.objects.annotate(
    twice_end_time=F('begin_time') + 2 * F('end_time') - F('begin_time')
).filter(
    Q(test_type='difficult') &
    Q(status=1, twice_end_time__lt=timezone.now()) |
    Q(status=2, end_time__lt=timezone.now())
)