2017-11-26 3 views
1

Die Frage ist einfach. Ich baue eine Rezeptwebseite mit mehreren Benutzern auf, um ihre Rezepte einzureichen. Ich möchte eine Seite erstellen, die alle Benutzer auflistet und die Benutzerhierarchie basierend auf ihrem neuesten Beitrag anordnet. Wie kann man die Benutzer in der Datei views.py am besten abfragen und an den Kontext übergeben?Django: Wie Abfragen von Benutzern basierend auf dem neuesten Beitrag

das Code-Snippet ist so etwas;

models.py

class UserRecipe(models.Model): 
    user = models.ForeignKey(User) 
    name = models.CharField(max_length=200) 
    created_date = models.DateTimeField(default=timezone.now) 

, wie Sie das UserRecipe Modell Benutzer mit ForeignKey verknüpft sehen können. Also im Erstellen einer Ansicht in views.py, um Benutzer aufzulisten und sie basierend auf dem Datum ihrer letzten UserRecipe created_date einzuordnen.

also, um Benutzer abzufragen und sie basierend auf ihrer UserRecipe created_date anzuordnen, was ist der beste Weg, es zu tun?

+0

Haben Sie alle Rezepte f auflisten möchten Von den neuesten zu den ältesten? Oder möchten Sie die Benutzer auflisten, basierend darauf, welcher Benutzer zuletzt ein Rezept veröffentlicht hat? – kujosHeist

+0

Ich möchte die Benutzer auflisten, basierend darauf, welcher Benutzer zuletzt ein Rezept geschrieben hat – Arekay

+0

@Arekay in Ihrer Filterabfrage add '' 'order_by ('- time_create')' ''. –

Antwort

1

können Sie die Abfrage folgende verwenden

users = User.objects.order_by("-userrecipe__created_date") 

Es in der richtigen Reihenfolge sein wird, jedoch wird es Duplikate sein, dh es wird für jedes Rezept ein Benutzereintrag werden sie geschaffen haben

Wenn Sie mit postgres als db sind, können Sie dies vermeiden, indem das Hinzufügen .distinct() bis zum Ende der Abfrage, sonst kann man diese Duplikate wie entfernen:

already_seen = [] 
for u in users: 
    if u not in already_seen: 
     already_seen.append(u) 

users = already_seen 
+0

Dank, ich bin immer noch im Zeichnungsmodus, so bin ich immer noch mit sqlite3 für db. distinct() funktioniert nicht. Also ist deine Lösung bereits jetzt gut genug für mich. – Arekay

Verwandte Themen