0

Ich bin ziemlich neu in der Entwicklung mit Django und ich hoffe, dass mir jemand helfen kann. Ich habe zwei Hauptmodelle in einer Ansicht und in einer Vorlage. Jedes meiner "Haupt" -Modelle hat sein eigenes "Sub" -Modell (mit einem Fremdschlüssel). Meine Ausgabe ist in Ordnung und es funktioniert so weit.Wie kann ich meine Modellausgabe in Django sortieren?

Mein Problem ist, ich möchte das Untermodell meines zweiten Hauptmodells nach Namen sortieren. Ist das möglich, oder was muss ich ändern? In meinem Beispiel möchte ich 'insassen.last_name' nach Namen sortieren.

Ich habe ein Bild, wie es jetzt aussieht: occupant.last_name

Mein models.py

class Management[...] 
class Employee[...] 

class Houses(models.Model): 
    name = models.CharField(max_length=50) 

    def __str__(self): 
     return self.name 

class Occupant(models.Model): 
    house = models.ForeignKey(Houses, on_delete=models.CASCADE) 
    last_name = models.CharField(max_length=50) 
    first_name = models.CharField(max_length=50) 
    room = models.IntegerField(default=0) 

    def __str__(self): 
     return self.first_name 

Mein views.py

class IndexView(ListView): 
    context_object_name = 'all_management_list' 
    template_name = 'blackboard/index.html' 
    queryset = Management.objects.order_by('order_number') 

    def get_context_data(self, **kwargs): 
     context = super(IndexView, self).get_context_data(**kwargs) 
     context['Houses'] = Houses.objects.all() 
     # And so on for more models 
     return context 

Meine Vorlage. html

Vielen Dank für die Hilfe und Entschuldigung für mein schlechtes Englisch. :)

Mit freundlichen Grüßen

borsTiHD

Antwort

2

Sie in queryset von order_by sortieren()

um nach nachnamen die Standardreihenfolge in Modell machen, indem diese unter Klasse Hinzufügen Meta

class Occupant(models.Model): 
    house = models.ForeignKey(Houses, on_delete=models.CASCADE) 
    last_name = models.CharField(max_length=50) 
    first_name = models.CharField(max_length=50) 
    room = models.IntegerField(default=0) 

    def __str__(self): 
     return self.first_name 
    class Meta: 
     ordering = ('last_name',) 
+0

Danke, es hat funktioniert. :) Ich habe auch eine andere Lösung gefunden ({% für Bewohner in houses.occupant_set.all | dictsort: "last_name"%}). Aber ich denke, ich werde deine bevorzugen. : D – borsTiHD

+0

Ihre Lösung ist in Ordnung, aber nicht die beste Leistung :) –

+0

Ein weiterer Grund, Ihre Lösung zu verwenden. Ich danke dir sehr. : D Und Entschuldigung, ich kann deine Antwort nicht auffrischen. :/ – borsTiHD

Verwandte Themen