Update 2:
(Nach Kommentare OP liest) Ich habe ein neues Modell empfiehlt das Hinzufügen der neuesten Vorlage zu verfolgen. Nennen Sie es LatestSubmission
.
class LatestSubmission(models.Model):
user = models.ForeignKey(User)
problem = models.ForeignKey(Problem)
submission = models.ForeignKey(Submission)
Sie können dann entweder
- Überschreibung
Submission.save()
erstellen/aktualisieren Sie den Eintrag in LatestSubmission
jedes Mal einem Beitrag Benutzer eine neue Lösung für ein Problem
- fügen Sie eine Funktion, die das gleiche zu einem tut geeignet signal.
so dass LatestSubmission
eine Zeile pro Problem-Benutzer-Einreichung-Kombination enthält, die auf die neueste Einreichung für das Problem von jedem Benutzer zeigt. Sobald Sie dies an Ort und Stelle haben, können Sie eine einzelne Abfrage Feuer:
LatestSubmission.objects.all().order_by('problem')
aktualisieren:
Da die OP Beispielcode geschrieben hat, kann die Lösung nun wie folgt geändert werden:
for user in User.objects.all(): # Get all users
user.submission_set.latest('time') # Pick the latest submission based on time.
Ursprüngliche Antwort
In Abwesenheit von Datum/Uhrzeit basiert Kriterien für die Entscheidung, welche "älter" oder "neuer" ist, können Sie den Primärschlüssel (id
) von verwenden, um die alten "zu vernachlässigen".
for user in User.objects.all(): # Get all users
user.submission_set.latest('id') # Pick the latest submission by each user.
Was meinst du mit "Feld, das einen Benutzer und ein Problem hat"? Sprechen Sie über Django-Modelle? Veröffentlichen Sie den entsprechenden Code. –
Modelle sind wie folgt: Problem: Titel, in Frage Unterwerfung: Problem (foreignkey), Benutzer (foreignkey), Inhalt Benutzer: Auth-Benutzer Nehmen wir an, p1, p2 zwei Probleme und u1, u2 sind zwei Benutzer u1 hat zwei Übergaben s1, s2 für p1 und eins (s3) für p2 und u2 hat einen für p1 (s4), zwei für p2 (s5, s6) Also ich möchte ein Abfrageergebnis wie folgt: s2, s3, s4, s6 dh vernachlässige die alten mit gleichem user-problem s2, s3, – crodjer