【发布时间】:2018-09-13 14:36:25
【问题描述】:
假设我有以下模型:
class TestModel(models.Model):
some_integer = models.IntegerField()
我有这个模型的 3 个实例:
TestModel.objects.create(some_integer=100)
TestModel.objects.create(some_integer=50)
TestModel.objects.create(some_integer=20)
我想以某种方式对查询集进行注释以便能够获得以下结果:
for obj in TestModel.objects.annotate(difference=...):
print(obj.difference)
=> 50 # 100 - 50
=> 30 # 50 - 30
=> None # we don't have anything created after this record
是否有机会使用 Django(2.0) 查询集执行此操作,或者我应该在 Python 中“手动”执行此操作?我们可以放心地假设对象是按 pk 或某个日期排序的,因此保留了排序。
【问题讨论】:
-
我认为概念的问题是标准的关系数据库没有上一个或下一个的概念。元素可以按任何顺序返回,除非元素是明确排序的。
-
@WillemVanOnsem 我们可以假设 QuerySet 是按 pk 或某个日期排序的,我已经用这些信息更新了描述。
标签: python django django-queryset