2017-01-23 73 views
0

我使用GET与tastypie筛选结果,并需要通过datefield排序结果,但tastypie抱怨该字段不允许排序。在Django与Tastypie,无法获得order_by与关系

Django version: 1.10.2 
Tastypie version: 0.13.3 

实例网址:

localhost:8000/foos/api/foos/?format=json?order_by=bars__insp_date 

例Tastypie资源:

class BarResource(ModelResource): 

    class Meta: 
     queryset = Bar.objects.all().distinct() 
     resource_name = 'bars' 
     filtering = { 
      'insp_date': ALL_WITH_RELATIONS, 
     } 
     allowed_methods = ['get'] 
     ordering = ['insp_date'] 


class FooResource(ModelResource): 

    onlinereports = fields.ToManyField(
     BarResource, 
     'bars', 
     null=True, 
     full=True, 
    ) 

    class Meta: 
     queryset = Foo.objects.all().distinct() 
     resource_name = 'foos' 
     filtering = { 
      'bars': ALL_WITH_RELATIONS, 
     } 
     ordering = ['bars'] 

响应:

{ 
error: "The 'bars' field does not allow ordering." 
} 
+1

您是否尝试将“bars__insp_date”添加到FooResource的排序列表中? – makaveli

+0

@makaveli工作。谢谢! – Twitch

回答

2

正如我在注释中规定,你要添加字段名称与模型相关的资源您正在使用。因此,如果您想通过BarModel的字段来订购FooModel,则该关系必须被指定为'bar__field'