我想从数据库中获取最新日期。 这是我的sql语句。
select "RegDate"
from "Dev"
where "RegDate" = (
select max("RegDate") from "Dev")
它在我的数据库中有效。 但是如何在Django中使用它?
我尝试了这些代码,但返回错误。这些代码在views.py中。
版本1:
lastest_date = Dev.objects.filter(reg_date=max(reg_date))
错误:
'NoneType' object is not iterable
版本2:
last_activation_date = Dev.objects.filter(regdate='reg_date').order_by('-regdate')[0]
错误:
"'reg_date' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."
我已经在课程开始时定义了reg_date。
我应该怎么做?
答案 0 :(得分:2)
您使事情变得过于复杂,只需按regdate
进行排序,就可以了:
last_activation_dev = Dev.objects.order_by('-regdate').first()
.first()
将返回这样的Dev
对象(如果有),如果没有None
对象则返回Dev
。
如果您只对regdate
列本身感兴趣,则可以使用.values_list(..)
:
last_activation_date = Dev.objects.order_by('-regdate').values_list('regdate', flat=True).first()
通过使用.filter()
,您实际上是通过Dev
记录对Dev
表进行了过滤,使得regdate
列的值为 'reg_date'
,因为'reg_date'
不是有效的日期时间格式,因此会产生错误。