从Django DateTimeField获取日期

Jua*_*ion 14 python django

我想就此事请求一些帮助

我正在学习django并尝试了一些代码,但是我试图从模型的DateTimeField获取日期时碰到了一堵砖墙

这是我正在处理的代码:

class APPLICANT_DATA(models.Model):
    SCHEDULED_AT = models.DateTimeField(null=True, blank=True)


def somefunction():
    app_data = APPLICANT_DATA.objects.all()
    for item in app_data:
        the_date = str(item.SCHEDULED_AT.strftime("%B-%d-%Y")) + ", " + the _date
Run Code Online (Sandbox Code Playgroud)

'NoneType' object has no attribute 'strftime'即将获得()即使我的模型包含3条记录,所有记录都有日期和时间

我究竟做错了什么?对新手的任何建议?非常感谢.

bak*_*kal 21

DateTimeField成为datetime.datetimePython中的对象

如果您需要date稍后操作对象,可以datetime.date直接从您的对象中拉出对象DateTimeField(),datetime.datetime.date()如下所示:

class ApplicantData(models.Model):
    scheduled_at = models.DateTimeField(null=True, blank=True)

date = application_data.scheduled_at.date()
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为Django会将其转换DateTimeFielddatetime.datetime我们调用的Python类型date().

格式化datetime.date您想要的

然后,从中获得一个datetime.date对象,您可以使用您想要的格式datetime.date.strftime().

如果你不需要一个date对象,你也可以strftime在你的datetime.datetime对象上使用它,没有问题.除了你的对象中有一个无字段.

处理NULL/ None字段

如果要允许NULL值,scheduled_at可以执行以下操作:

if application_data.scheduled_at is not None:
      date = application_data.scheduled_at.date()
Run Code Online (Sandbox Code Playgroud)