我的模型中有date_updated
字段。我想得到date_updated
时间最长或为空/空白的对象
我怎样才能以最有效的方式做到这一点?
class Product(models.Model):
date_updated = models.DateTimeField(auto_now_add=False, auto_now=True, null=True)
date_added = models.DateTimeField(auto_now_add=True, auto_now=False)
答案 0 :(得分:0)
oldest_date = YourModel.objects.all().order_by("-date_updated")[0
]
但是,我不确定这对Null值有何影响。确保您可以单独处理它们:
oldest_date = YourModel.objects.exclude(date_updated=None).order_by("-date_updated")[0]
never_updated = YourModel.objects.filter(date_updated=None)
答案 1 :(得分:0)
好吧,您可以使用Foo.objects.all().order_by('-date_updated').last()
来获取最早的版本。但是null / blank选项会出现问题,因为它可能会以特定的顺序返回多个对象。我想你可以选一个。
如果您正在尝试获取最旧版本,包括那些从未更新的版本,您可以在创建对象时将date_update
设置为NOW()
(这就是我所做的)。
答案 2 :(得分:0)
如果您想优先考虑None
的元素,可以使用queryset method .latest([field])
:
YourModel.objects.latest('date_updated')
如果至少有一个为空,它将返回最近的日期或第一个日期(在Meta模型中设置默认排序)。