2017-04-18 68 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)