添加没有时区的datetime对象

时间:2014-11-22 16:58:19

标签: django

我想添加我根据用户输入创建的datetime对象。但我想在这个模型中添加这个没有时区的东西。我尝试了几种不同的方式但没有工作。

models.py

class troops_command(models.Model):       
    datetime = models.DateTimeField('ki')

我如何创建对象:

    datetime_object = datetime_module.datetime.strptime(datetime_string, format_datetime)
    import pytz
    datetime_object = pytz.timezone("Europe/London").localize(datetime_object, is_dst=None)

之后:

>>> print(datetime_object)
2014-11-22 14:49:00+00:00

但是当我把它添加到数据库时:

Troops_command_model.objects.create(datetime=datetime)

数据库返回:

2014-11-22 15:49:00+01

settings.py

TIME_ZONE = 'Europe/Warsaw'

2 个答案:

答案 0 :(得分:4)

只需创建自定义模型字段:)简单易用。

class MytypeField(models.Field):
    def db_type(self, connection):
        return 'timestamp'

class Test(models.Model):
    name = models.CharField(max_length=80)
    something_else = MytypeField()

“timestamp”用于postgresql,对于mysql应为“datetime”

答案 1 :(得分:1)

settings.py

CONST USE_TZ

  

<强> USE_TZ
  默认值:False
  一个布尔值,指定日期时间是否默认为时区感知。如果将其设置为True,Django将在内部使用时区感知日期时间。否则,Django将在当地时间使用天真的日期时间。

     

django-admin.py startproject创建的默认 settings.py 文件包含USE_TZ = True,以方便使用。

因此,您可以更改此设置,查看更多django settings docs

UPDATE!

尝试使用enter link description here。或尝试使用pytz创建自定义字段 - &gt; tutorial