我有以下型号:
class Transition(models.Models):
id = models.AutoField(primary_key=True)
transition_type = models.IntegerField(dbcolumn='transition_typeid')
instance = models.IntegerField(dbcolumn='instanceid')
ts = models.DateTimeField()
class Meta:
managed=False
db_table = 'transitions'
我想使用Django的ORM发出以下查询:
select max(id) from transitions group by(instanceid);
我知道我可以使用原始查询,如下所示:
Transition.objects.raw('select max(id) from transitions group by (instanceid)')
然而,缺点是查询似乎立即执行 不会让自己进一步过滤,例如我想得到一个查询 设置为可以应用另一个过滤器的时间戳。
有没有办法在不使用Django的原始查询的情况下使用纯粹的ORM方式发出上面的select语句?
答案 0 :(得分:1)
此查询应该适合您
Transition.objects.values('instance').annotate(Max('id'))
docs:https://docs.djangoproject.com/en/1.8/topics/db/aggregation/