【发布时间】:2016-05-10 00:33:38
【问题描述】:
我在我的应用程序中使用 django-1.7。我有一个有两个 DateTimeFields 的模型。喜欢
class Task(models.Model):
start_time = models.DateTimeField(null=True, blank=True)
finish_time = models.DateTimeField(null=True, blank=True)
我想用小时 gte 和 lte 过滤字段 start_time 和 end_time 以便我可以获得包含任务对象的查询集,这些任务对象必须在特定时间开始并结束于一个特定的时间。我尝试过的
Task.objects.filter(start_time__hour__gte=2)
Task.objects.filter(end_time__hour__lte=2)
但是这个查询给了我错误
FieldError: Unsupported lookup 'hour' for DateTimeField or join on the field not permitted.
我也尝试过 queryset.raw,它提供了正确的值,但在与 django-filters 包一起使用时会出错。
def start_time_filter(self, queryset, value):
if value.isdigit():
return queryset.raw("select * from app_task WHERE TIME(`start_time`) >= '{0}';".format(value))
return queryset.none()
将得到帮助
【问题讨论】:
标签: django django-models django-views django-rest-framework django-filter