Django: Wählen Sie Werte mit maximalem Zeitstempel aus oder verbinden Sie sich mit derselben Tabelle

Ich habe ein einfaches Django-Modell

class Server(models.Model):
    name = models.CharField(max_length=120)

class ServerPropertie(models.Model):
    name = models.CharField(max_length=120)
    value = models.CharField(max_length=120)
    timestamp = models.DateTimeField()
    server = models.ForeignKey(Server)

Ich möchte dem Servermodell die Methode get_properties hinzufügen, die alle letzten Eigenschaften für den aktuellen Server zurückgibt. Ich meine, es sollte den Namen und den Wert aller Eigenschaftsnamen für den aktuellen Server zurückgeben, und jeder eindeutige Eigenschaftsname sollte einen Wert haben, wobei die Zeile einen maximalen Zeitstempel hat.

Ich kann es in rohem hardcodedem rohem SQL tun (ich benutze postgres):

SELECT t1.name, t1.value FROM environments_serverpropertie t1
JOIN (SELECT max("timestamp") "timestamp", name 
      FROM environments_serverpropertie
      group by name) t2 on t1.name = t2.name and t1.timestamp = t2.timestamp;

oder in Python, aber ich glaube, dass es Python-Lösung gibt. Kannst du mir bitte Helfen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage