我正在学习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
答案 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)