2017-04-18 88 views
0

我学习Django的,我想通过实地last_name为了我的对象,但我想我可能失去了一些东西,这是我的函数的外观:Django的顺序由

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) 

更新

我想我要做的就是影响变量排序在我的模型元类,但我需要它由小写订购:

class Meta(DRYPermissionModel.Meta): 

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

你可以看到[这](http://stackoverflow.com/questions/3409047/django-orm-case-insensitive-order-by)链接如果这有帮助。 – badiya

回答

0

你在这里做什么错什么是self.queryset 。您需要确保此变量与model.objects.all()类似。只有这样你的订单才能工作。

希望这会有所帮助。

+0

你可以请求我的更新 – commonSenseCode

+0

你能详细说明一下'ORDER BY user_name,但好像字符串是小写' –

+0

那东西就是用户名可以是:Alex.Alexandros或alex.alexandros。我想要它的订单,因为它是小写 – commonSenseCode

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)