首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django fixtures DateTimeField runtimeWarning

django fixtures DateTimeField runtimeWarning
EN

Stack Overflow用户
提问于 2013-03-20 01:52:07
回答 3查看 13.1K关注 0票数 15

我已经为我的django项目设置了一些基本的fixture。插入数据库中的一条记录如下所示:

代码语言:javascript
复制
  {
    "model": "articles.article",
    "pk": 1,
    "fields": {
      "title": "Blackened Recordings Launches",
      "headline": "we're so psyched about our new adventure",
      "content": "<p>We like to make it a point here not to bore you with the not-so-exciting business aspects of making and sharing music, but we're so psyched about our new adventure that we just had to tell you about it as we officially launch our very own record label, Blackened Recordings.</p><p>Some of you, who have followed along throughout the years, are aware that in 1994 we renegotiated our contract with the Warner Music Group, which resulted in a joint venture with our record company for releasing all of our recordings including long form videos. Per that agreement, as of today we have taken ownership of all of our master recordings and Blackened Recordings will be the home of all of our current albums and videos along with all future releases including the December 10 release of the \"Quebec Magnetic\" DVD and Blu-ray.</p><p>You may have heard us say it once or twice or a thousand times before, but it's always been about us taking control of all things 'Tallica to give you 110% on every single level every single time. Forming Blackened Recordings is the ultimate in independence, putting us in the driver's seat of our own creative destiny. We're looking forward to making more music and getting it all out to you in our own unique way.</p>",
      "image": "examples/slide-03.jpg",
      "active": 1,
      "created_at": "2013-03-16 17:41:28"
    }
  },

这是它所对应的模型:

代码语言:javascript
复制
class Article(models.Model):
    """News article, displayed on homepage to attract users"""
    class Meta:
        db_table = 'article'
    title = models.CharField(max_length=64)
    headline = models.CharField(max_length=255)
    content = models.TextField()
    image = models.ImageField(upload_to = 'articles/', null=True, blank=True)
    active = models.BooleanField()
    created_at = models.DateTimeField()
    def __unicode__(self):
        return self.title

在插入装置记录时,我收到以下警告:

代码语言:javascript
复制
/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py:827: RuntimeWarning: DateTimeField received a naive datetime (2013-03-16 17:41:28) while time zone support is active.
  RuntimeWarning)

我不知道这里出了什么问题。我尝试使用this blog post,但我确实安装了pytz,并且在我的settings.py中有USE_TZ=True选项。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-20 22:12:36

实际上,解决方案深深地隐藏在python docs中,引用如下:

序列化aware datetime时,会包括UTC偏移量,如下所示:

"2011-09-01T13:20:30+03:00"

这样的装置是完全接受的,在我的例子中是:

代码语言:javascript
复制
"2013-03-16T17:41:28+00:00"
"2013-03-17T23:36:12+00:00"
"2013-03-18T13:19:37+00:00"

输出结果是:

代码语言:javascript
复制
$ ./manage.py loaddata articles/fixtures/initial_data.json 
Installed 3 object(s) from 1 fixture(s)

请注意,'2013-03-16 17:41:28 UTC+0000'不是正确的时区感知datetime格式,它将显示以下错误:

代码语言:javascript
复制
DeserializationError: Problem installing fixture 'articles/fixtures/initial_data.json': [u"'2013-03-16 17:41:28 UTC+0000' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."]
票数 27
EN

Stack Overflow用户

发布于 2013-08-05 22:42:15

另外,如果您正在使用yaml进行序列化,那么在PyYaml中反序列化datetime似乎存在一个错误

https://code.djangoproject.com/ticket/18867

可以尝试使用json作为序列化程序,也可以在.yaml文件中的日期时间两边添加引号。

票数 10
EN

Stack Overflow用户

发布于 2013-03-20 02:31:39

您可能应该仔细查看created_at字段(您是否使用know about auto_now_add=True?)。

我在猜测你使用的是什么,所以你可以尝试像这样的东西

代码语言:javascript
复制
import datetime
from django.utils.timezone import utc

Article.created_at = datetime.datetime.utcnow().replace(tzinfo=utc)

或者,您可以通过设置禁用时区支持

代码语言:javascript
复制
USE_TZ = False

在你的settings.py

或者你可以让你不知道的datetime知道

代码语言:javascript
复制
import datetime
import pytz
utc=pytz.UTC

#  where ever you get your datetime from
unaware = datetime.datetime(2013,3,16,17,41,28,0)

now_aware = utc.localize(unaware)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15506858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档