如何在Django中使用SQL语句?

时间:2018-11-08 10:11:59

标签: django

我想从数据库中获取最新日期。 这是我的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。

我应该怎么做?

1 个答案:

答案 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'不是有效的日期时间格式,因此会产生错误。