在使用Tastypie的Django中,无法让order_by与关系一起工作

时间:2017-01-23 21:27:55

标签: django python-3.x tastypie

我正在使用GET和tastypie过滤结果并需要按日期字段排序结果,但是tastypie抱怨该字段不允许排序。

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 个答案:

答案 0 :(得分:2)

正如我在评论中所述,您必须添加与您正在使用的资源模型相关的字段名称。因此,如果您想通过BarModel的字段订购FooModel,则必须将关系指定为'bar__field'