Django Tastypie:允许随机选择顺序

时间:2014-01-08 22:27:13

标签: django tastypie

Per this question,我知道如何在tastypie资源的Meta类中随机排序查询集,但有没有办法让它成为available order_by option而不是默认值?看起来ordering Meta设置中定义的任何内容也必须列在fields设置中,并且?显然不是一个领域。没有它,我只是得到,

{"error": "No matching '?' field for ordering on."}

1 个答案:

答案 0 :(得分:2)

您可以覆盖Resource上的apply_sorting方法(documentation),可能是这样的(未经测试):

class YourResource(ModelResource):
    def apply_sorting(self, obj_list, options=None):
        if options and '?' in options.get('order_by', ''):
            return obj_list.order_by('?')
        return super(YourResource, self).apply_sorting(obj_list, options)

如果这不起作用,您可能需要复制代码from the ModelResource implementation以获取正确的order_by值。