2017-04-18 2 views
0

Ich lerne django, Ich versuche, meine Objekte von Feld last_name zu bestellen, aber ich glaube, ich könnte etwas fehlen, das ist, wie meine Funktion aussieht:Django Auftrag von

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) 

UPdate

ich denke, was ich tun muss, ist die variable Reihenfolge in meinem Modell Meta-Klasse beeinflussen, aber ich muss es von Klein bestellen:

class Meta(DRYPermissionModel.Meta): 

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

Sie sehen können [diese] (http://stackoverflow.com/questions/3409047/django-orm-case-insensitive-order-by) link wenn das hilft. – badiya

Antwort

0

Was machst du hier falsch in self.queryset . Sie müssen sicherstellen, dass diese Variable model.objects.all() ähnelt. Nur dann wird Ihre Bestellung von der Arbeit.

Hoffe, das hilft.

+0

können Sie pls se mein Update – commonSenseCode

+0

Könnten Sie ein wenig mehr auf 'ORDER BY Benutzername, aber als ob die Zeichenfolge war Kleinbuchstaben ' –

+0

die Sache ist, dass Benutzername sein kann: Alex.Alexandros oder alex.alexandros. Ich möchte für sie bestellen, als ob es Kleinbuchstaben war – commonSenseCode

0

Das eigentlich das, was mein Problem gelöst ist:

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)