我正在尝试在Django中执行以下SQL的等效操作:
从申请人那里选择* date_out-date_in> = 1 AND date_out-date_in <= 6
我可以作为RAW sql查询来执行此操作,但是在处理RawQuerySet而不是常规QuerySet对象时,这变得令人沮丧,因为我希望以后可以在代码中对其进行过滤。
您可以使用该extra()方法并传入where关键字参数。的值where应为包含WHERE上面查询的SQL子句的列表。我用Postgresql 8.4进行了测试,这就是我的情况:
extra()
where
WHERE
q = Applicant.objects.extra(where = ["""date_part('day', age(date_out, date_in)) >= 1 and date_part('day', age(date_out, date_in)) <= 6"""])
这将返回一个有效QuerySet实例。
QuerySet