相关疑难解决方法(0)

Django auto_now和auto_now_add

对于Django 1.1.

我在models.py中有这个:

class User(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)

更新行时,我得到:

[Sun Nov 15 02:18:12 2009] [error] /home/ptarjan/projects/twitter-meme/django/db/backends/mysql/base.py:84: Warning: Column 'created' cannot be null
[Sun Nov 15 02:18:12 2009] [error]   return self.cursor.execute(query, args)
Run Code Online (Sandbox Code Playgroud)

我的数据库的相关部分是:

  `created` datetime NOT NULL,
  `modified` datetime NOT NULL,
Run Code Online (Sandbox Code Playgroud)

这引起关注吗?

附带问题:在我的管理工具中,这两个字段没有显示出来.这是预期的吗?

python django datetime django-models django-admin

249
推荐指数
8
解决办法
21万
查看次数

Django default = timezone.now()使用"旧"时间保存记录

这个问题现在已经发生了几个星期,而且与我的项目提出的不同.

使用的两个模型具有时间戳字段,默认情况下设置为timezone.now().

这是引发错误标志的序列:


  • 模型一在下午7:30创建

  • 模型二是在晚上10点创建的,但在MySQL数据库中它存储为晚上7:30!

创建的每个模型的时间戳都保存在下午7:30,而不是实际时间,直到某个持续时间过去.然后设置一个新的时间,所有以下模型都有新的时间... Bizzare


一些额外的细节可能有助于发现问题:

我有一堆方法可以剥离我们的时区,tzinfo并用UTC替换它们.

这是因为我正在进行timezone.now() - creationTime计算以创建:"模型在很久以前发布"功能在项目中.但是,这确实不应该是问题的原因.

我认为使用datetime.datetime.now()不会产生任何影响.

无论如何,谢谢你的帮助!

python django django-timezone

17
推荐指数
2
解决办法
1万
查看次数

为什么django-lint告诉我`auto_now_add`已被弃用?

嗨伙伴Djangonauts:

我用django-lint检查了我的项目,它产生了:

W:211,16:MyModel: timestamp: Uses superceded auto_now or auto_now_add
Run Code Online (Sandbox Code Playgroud)

提交信息:

auto_now/auto_now_add not technically deprecated, but they still suck.
Run Code Online (Sandbox Code Playgroud)

为什么他们说auto_now/auto_now_add"吮吸"?使用这两个字段参数实现创建/上次更新的模式没有问题.

这种模式有更好的方法吗?自定义字段类?为什么(如果这种方法更好)它还没有被集成到Django中?

python django datetime pylint last-modified

7
推荐指数
1
解决办法
3367
查看次数