python - 如何设置默认日期字段并覆盖它以及设置默认默认日期时间字段并覆盖它,所有这些都在同一个models.py中
问题描述
我的两个模型有 datefield 和 datetimefield。它们存在于同一个 models.py 文件中,我想在添加到数据库/存在时将它们设置为默认值。更重要的是,我还想覆盖这些字段以生成模型来测试它们。
经过一番研究,我开始使用 pytz 和 django.utils 时区。当我尝试使用 python 的内置日期时间(使用 timedelta 等)覆盖它们时,我遇到的问题是运行时错误。所以我尝试转换 pytz.utc.localize(),但它抱怨我喂给它的 datetime 对象并不幼稚,但是当我回到原来的版本时,它仍然抛出运行时错误。我找到了很多方法来克服这个问题,主要是使用date = models.DateField(_("Date"), default=datetime.date.today)
which requires之类的东西import datetime
,但这里的问题是我也想使用 DateTimeField,现在只使用 DateField。所以我会使用date = models.DateField(_("Date"), default=date.today)
,但这需要from datetime import date
. 进口冲突,整个事情都在搞乱我
class SomeTime(models.Model):
moment = models.DateTimeField(default=???, editable=True, blank=True)
class SomeDay(models.Model):
date = models.DateField(default=???, editable=True, blank=True)
我很想去
m = SomeTime()
m.moment = #some datetime that I set, It should not throw a runtime error
m.save()
d = SomeDay()
d.date = #some date that I set, It should not throw a runtime error
d.save()
除了简单地创建这些对象外,SomeTime 必须保存当前日期时间到时刻,而 SomeDay 必须保存当前日期
解决方案
你会发现没有问题的地方。如果您需要同时导入日期时间和日期,那么就这样做。或者更好的是,导入 datetime 模块并访问其中的两个类。
import datetime
class SomeTime(models.Model):
moment = models.DateTimeField(default=datetime.datetime.now, editable=True, blank=True)
class SomeDay(models.Model):
date = models.DateField(default=datetime.date.today, editable=True, blank=True)
或者,如果您愿意,请执行from datetime.import datetime, date
thendefault=datetime.now
和default=date.today
。
推荐阅读
- java - Java 安全策略文件是否支持注释?
- vb.net - 自动更新 ID 标签
- node.js - node.js Azure Web App 在长 url 上返回 400
- sql - CASE WHEN NOT 不会产生正确的结果?
- c# - 带有 ResponseHeadersRead 的 HttpClient 在没有 Fiddler 的情况下第二次 GetAsync 尝试失败(超时)(Http/Https 调试器)
- sql - SQL查询及疑难解答
- python - 停止 wxPython 循环
- r - Rmd 笔记本中节号后的尾随句点
- html - 访问@mixin 中的根变量
- json - 使用 T-SQL 从 Json 文件中检索结果而不是迭代多个子对象