Python 如何在django中单独设置时间字段00:00:00:

Python 如何在django中单独设置时间字段00:00:00:,python,django,django-models,Python,Django,Django Models,在这里,我在这个日期字段中提到了我的model.py默认值,我想将时区指定为00:00:00,所以请帮助我这样做 型号.py class Dummy(models.Model): name = models.CharField(max_length=100) date = models.DateTimeField(null=True,auto_now_add=True) 预期输出,如 { "id": 1, "name": "xxxx", "date":

在这里,我在这个日期字段中提到了我的model.py默认值,我想将时区指定为00:00:00,所以请帮助我这样做

型号.py

class Dummy(models.Model):
    name = models.CharField(max_length=100)
    date = models.DateTimeField(null=True,auto_now_add=True)
预期输出,如

{
    "id": 1,
    "name": "xxxx",
    "date": "2018-09-26T00:00:00Z"
}
实际产出

{
    "id": 1,
    "name": "xxxx",
    "date": "2018-09-26T05:52:26.626604Z"
}

使用
DateField
而不是
DateTimeField

似乎您根本不需要时间组件;如果您打算在所有情况下都将其归零,那么存储它是没有意义的

只保留日期,在序列化程序中,使用该日期实例化datetime

from datetime import date, datetime


# Where t would normally be a date from your model...
t = date.today()
print(datetime(t.year, t.month, t.day).isoformat())
# 2018-09-26T00:00:00

您尚未向我们提供有关如何生成此JSON的信息,但如果您使用Django的内置序列化,则可以通过这种方式将日期转换为零时间日期时间。

来自Django documents for Field.default:

字段的默认值。这可以是值,也可以是可调用的 对象如果可调用,则每次调用新对象时都会调用它 创造

这样做:

from datetime import datetime, timedelta

def default_start_time():
    now = datetime.now()
    start_time = now.replace(hour=00, minute=0, second=0, microsecond=0)
    return start_time 

class Dummy(models.Model):
    name = models.CharField(max_length=100)
    date = models.DateTimeField(null=True,auto_now_add=True,default=default_start_time)

您可以使用
.replace()
方法删除
datetime
对象的
time
部分:

self.date = self.date.replace(hour=0, minute=0, second=0, microsecond=0)
这将导致:

datetime.datetime(2018, 9, 26, 0, 0)

如果我使用DateField,它只是单独获取日期,但我需要以这种格式输出“日期”:“2018-09-26T00:00:00Z”@Mohistolanki TIMEZONE='UTC'除了这个之外,我还想更改模型中的任何内容。在设置中添加TIMEZONE='UTC'后,我也会得到相同的输出,比如
2018-09-26T06:07:15.626452Z
你必须手动更新现有对象的时区,`@Mohistolanki手动意味着你能告诉我怎么做吗?