在带有 Tastypie 的 Django 中,无法使 order_by 与关系一起工作
In Django with Tastypie, can't get order_by to work with relation
我正在使用带有 tastypie 的 GET 来过滤结果并需要按日期字段对结果进行排序,但 tastypie 抱怨该字段不允许排序。
Django version: 1.10.2
Tastypie version: 0.13.3
示例URL:
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."
}
正如我在评论中所述,您必须添加与您正在使用的资源模型相关的字段名称。因此,如果你想通过 BarModel 的字段对 FooModel 进行排序,则必须将关系指定为 'bar__field'
.
我正在使用带有 tastypie 的 GET 来过滤结果并需要按日期字段对结果进行排序,但 tastypie 抱怨该字段不允许排序。
Django version: 1.10.2
Tastypie version: 0.13.3
示例URL:
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."
}
正如我在评论中所述,您必须添加与您正在使用的资源模型相关的字段名称。因此,如果你想通过 BarModel 的字段对 FooModel 进行排序,则必须将关系指定为 'bar__field'
.