我有一个简单的Django模型
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)
我想将get_properties方法添加到Server模型,该模型将返回当前服务器的所有最后一个属性 . 我的意思是它应该返回当前服务器的所有属性名称的名称和值,并且每个uniq属性名称应该具有值,该行具有最大时间戳 .
我可以在原始的硬编码原始SQL(我使用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;
或者在python中,但我相信存在pythonic解决方案 . 请你帮助我好吗 .
1 回答
如果你正在使用PostgreSQL,通常的语法是:
从PostgreSQL documentation:
您可以在sql fiddle demo中查看并尝试它 .
可以将此语法从django documentation转换为django:
所以在django中它将是这样的: