【发布时间】:2019-09-16 23:14:33
【问题描述】:
我有 2 个模型:
class ServiceRequest(models.Model):
post_time = models.DateTimeField(default=timezone.now)
service = models.IntegerField(default=102)
class RequestSession(models.Model):
request = models.ForeignKey(ServiceRequest)
post_time = models.DateTimeField(default=timezone.now)
如果service 具有值102,它将具有一个或多个RequestSession。
我有查询集获取所有ServiceRequest : ServiceRequest.objects.all()
我的问题是:如果service!=102,如何order_by post_time。如果service=102 我想按requestsession_set 中最大的post_time 排序?
我尝试了annotate,但我不知道如何在requestsession 中获得最大的post_time,然后
我尝试过的查询:
queryset.annotate(time_filter=Case(
When(service_id=102, then=('requestsession_set__post_time')),
default=Value('post_time'),
output_field=DateTimeField(), ), ).order_by("-time_filter")
【问题讨论】:
标签: django django-rest-framework django-queryset