Frage

Ich habe Django Modelle, die Listen von Elementen sind, und ich möchte die Elemente auf jeder Liste eine separate Sortierreihenfolge haben. Vielleicht 1 Liste Positionen mit Namen, Liste 2 nach Datum, und Liste 3 nach Priorität sortieren wird.

Die Modelle sieht mehr oder weniger wie folgt aus:

class ListItem(models.Model):
    priority = models.IntegerField(choices=PRIORITY_CHOICES)
    name = models.CharField(max_length=240)
    due_date = models.DateTimeField(null=True, blank=True)
    list = models.ForeignKey(List)

Im Moment benutze ich diese Abfrage aus meiner Sicht:

lists = List.objects.filter(user=request.user)
return render_to_response('showlists.html', {'lists': lists })

Ich habe Beispiele lesen, die bedeuten, dass ich so etwas tun könnte:

lists = List.objects.filter(user=request.user).select_related().order_by("items.name")

Unter der Annahme, dass gearbeitet, es würde ich die Sammlung von Listen mit einer identischen Sortierreihenfolge für jede Charge von Artikeln. Wie würde ich mich über jede einzelne Liste der zugehörigen Artikel anders Sortierung?

War es hilfreich?

Lösung

Die Syntax für verwandte Modelle für die Bestellung ist das gleiche Doppelstrich Format wie für filter, so können Sie tun:

List.objects.filter(user=request.user).select_related().order_by("listitems__name")

Sie sollten nur in der Lage, die verschiedene Felder in der gleichen Art und Weise in dem order_by Aufruf zu verwenden.

Andere Tipps

Wenn die Listen klein sind, dann könnten Sie tun es in Python , mit Art und Tagging

list = <...code to get sublist here ...>
list.sort(key=lambda x: x.due_date) #sort by due date, say

Ansonsten eine Abfrage für jede Unterliste beginnen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top