【发布时间】:2019-02-04 13:42:43
【问题描述】:
给定以下模型
class Thing(models.Model):
...
class Status(models.Model):
thing = models.ForeignKey(Thing, ...)
value = models.CharField(choices=(('foo', 'foo'), ('bar', 'bar')), ...)
timestamp = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ('timestamp',)
是否有可能通过使用 Django ORM 工具(无需太多原始 SQL 编写和后查询内存处理)来获取最新时间戳值为 bar 的 Things 的查询集?
换句话说,我想重写下面的代码并为queryset实现相同的值:
thing_ids = []
for thing in Thing.objects.all():
status = thing.status_set.last()
if status is not None and status.value == 'bar':
thing_ids.append(thing.id)
queryset = Thing.objects.filter(id__in=thing_ids)
【问题讨论】: