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.