Django订购

时间:2017-04-18 10:52:03

标签: python django

我正在学习django,我试图通过字段last_name来命令我的对象,但我想我可能会遗漏一些东西,这就是我的函数看起来的样子:

def list(self, *args, **kwargs):
        data = super().list(*args, **kwargs)
        data = data.data
        x = self.queryset.order_by('last_name')
        print(x)  # I'm priting X but I still get list not ordered by last_name 
        return Response(data)

更新

我认为我必须做的是影响我的Model元类中的变量排序,但是我需要它按小写排序:

class Meta(DRYPermissionModel.Meta):

    ordering = ['username'] # ORDER BY user_name but as if the string was lower case

2 个答案:

答案 0 :(得分:0)

你在这里做错了是self.queryset。您需要确保此变量与model.objects.all()类似。只有这样,你的订单才会起作用。

希望这有帮助。

答案 1 :(得分:0)

这实际上解决了我的问题:

def list(self, *args, **kwargs):
        """ It returns the list of users ordered by user_name case insentive """
        users = self.queryset.order_by(Lower('username'))
        serializer = serializers.UserSerializer
        return Response(serializer(users, many=True).data)