【发布时间】:2018-08-19 05:42:43
【问题描述】:
我知道那里存在任何相同的主题,但没有描述我的情况:(
我在下面有一个模型:
class SecurityPrice (models.Model):
security = models.ForeignKey(Security, on_delete = models.CASCADE)
created = models.DateTimeField()
price = models.FloatField()
class Meta:
ordering = ('-created',)
def __unicode__(self):
return u'%s - %s - %s' % (self.created, self.security.ticker, self.price)
或在 sqlite 中:
CREATE TABLE IF NOT EXISTS "restful_api_securityprice"
("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"created" datetime NOT NULL,
"price" real NOT NULL,
"security_id" integer NOT NULL REFERENCES "restful_api_security" ("id"));
我想选择每张证券纸的最后价格
在原始 SQL 中,我可以使用这样的 SQL 请求:
SELECT MAX(created), security_id, price as created
FROM restful_api_securityprice GROUP BY security_id;
以下一些示例以了解我的需求:
表中的所有记录
sqlite> SELECT * FROM restful_api_securityprice;
1|2018-01-07 23:13:02|920.0|1
2|2018-01-07 23:13:43|137.12|2
3|2018-01-07 23:13:58|147.3|3
4|2018-01-09 00:46:29|920.0|1
5|2018-01-09 00:47:27|137.12|2
6|2018-01-09 00:48:08|147.3|3
我需要的东西
sqlite> SELECT MAX(created), security_id, price as created FROM restful_api_securityprice GROUP BY security_id;
2018-01-09 00:46:29|1|920.0
2018-01-09 00:47:27|2|137.12
2018-01-09 00:48:08|3|147.3
在原始 SQL 中没关系。但是如何在不包含原始 sql 的情况下在 Django ORM API 中做同样的事情?
【问题讨论】:
标签: sql django django-models django-orm