【问题标题】:Datetime field value accepted in djangodjango 中接受的日期时间字段值
【发布时间】:2015-03-25 07:11:26
【问题描述】:

我的模型数据库中有这个值1/19/2014 4:40,DateTimeField 在 Django 中是否接受该值?因为我试图根据范围过滤我的模型。目前是CharField,我将其更改为DateTimeField,因为我猜不可能通过CharField 过滤范围。我说的对吗?

【问题讨论】:

    标签: django datetime


    【解决方案1】:

    对于范围过滤,字段必须以可以执行SQL范围查询的格式存储在SQL数据库中。

    Char 字段只是文本,因此 SQL 无法知道您查询的范围类型,因为它不理解文本。

    因此,您需要将字段转换为 DateTimeField。这种迁移很可能无法使用默认设置执行,您需要编写一些自己的迁移逻辑。你可以使用像dateutil这样的辅助包。

    • 在模型中创建一个新字段

    • 迁移数据库

    • 解析所有旧值并存储在新字段中

    • 删除旧字段

    • 将新字段重命名为旧字段

    【讨论】:

    • 那么,我的当前值是否在 Django DateTimeField 中被接受?因为我的数据是从正在运行的程序自动生成的。
    • 请查看编辑 - 我的浏览器在评论中崩溃了
    • 实际上,我可以直接从我的其他程序中编辑我的值,以便下次生成它时使用正确的格式。我不知道的是,接受的 DateTimeField 值或所述字段的正确格式。
    • DateTimeField 不接受字符串,但接受日期时间对象。 docs.python.org/2/library/datetime.html - 您需要先将日期时间字符串解析为日期时间对象。
    • 是的,我会按照上面的步骤。要将字符串解析为日期时间,请检查此 stackoverflow.com/questions/466345/…
    猜你喜欢
    • 2012-02-27
    • 1970-01-01
    • 2017-05-17
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    相关资源
    最近更新 更多