Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 使用foregin键时的过滤器注释_Django_Django Rest Framework_Django Queryset - Fatal编程技术网

Django 使用foregin键时的过滤器注释

Django 使用foregin键时的过滤器注释,django,django-rest-framework,django-queryset,Django,Django Rest Framework,Django Queryset,我有两种型号: 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 =

我有两种型号:

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)
如果
服务
有值
102
,它将有一个或多个
请求会话

我已设置queryset获取所有
ServiceRequest
ServiceRequest.objects.all()

我的问题是:如果
服务,如何
发布时间
订购=102
。如果
service=102
我想按
requestsession\u集合的最大
post\u时间
订购

我尝试了
annotate
,但我不知道如何在
requestsession
中获得最大的
post\u time

我的问题我尝试过:

queryset.annotate(时间过滤器=大小写)(
当(服务id=102,然后=('requestsession\u set\u post\u time')时,
默认值=值(“post_时间”),
输出字段=DateTimeField(),),)。按(“-time\u过滤器”)排序

When(service=102, then=Max('requestsession_set__post_time')),
请注意,我还将
服务
替换为
服务
,因为在您的示例中
服务
只是一个
整型字段

此外,它应该是
default='post_time'
,不带
值。请参见将
then=Max('requestsession\u set\u post\u time')
更改为
then=Max('requestsession\u post\u time')
,然后它就可以工作了。Django说,
requestsession\u set
字段不被接受