pso*_*res 5 django django-queryset
所以这就是我想要做的.
我有一个里面的年份列表,例如years = [2002, 2003, 2004]
,我SomethingModel有一个DateField
我想做一个查询,它将返回属于那一年的所有对象:
我知道这项工作:
SomethingModel.objects.filter(date__year=2003)
SomethingModel.objects.filter(date__in=[list with dates])
Run Code Online (Sandbox Code Playgroud)
所以我试过这个:
SomethingModel.objects.filter(date__year__in=years)
Run Code Online (Sandbox Code Playgroud)
但是这回复了我这个错误:
FieldError: Join on field 'date' not permitted. Did you misspell 'year' for the lookup type?
Run Code Online (Sandbox Code Playgroud)
有谁知道如何做到这一点?直接的..
谢谢!
如果查看queryset文档,则不能
Entry.objects.filter(pub_date__year=2005)
Run Code Online (Sandbox Code Playgroud)
成为SQL等价物:
SELECT ... WHERE pub_date BETWEEN '2005-01-01' AND '2005-12-31 23:59:59.999999';
Run Code Online (Sandbox Code Playgroud)
所以你不能在概念上混合__in和__date.你无论如何都不能混合后缀,因为第一个"后缀"将被解释为不存在的关系.
您需要使用小于过滤器和大于过滤器,或者,如果列表不连续,则需要使用额外的where字段,例如:
SomethingModel.objects.extra(where=["YEAR(date) IN (" + ",".join([str(x) for x in [2003, 2008, 2010]]) + ")"])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2190 次 |
| 最近记录: |