You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中创建datetime2类型的模型字段?

在Django模型中创建MSSQL datetime2(7)字段的解决方案

方法一:自定义模型字段(推荐)

直接继承Django原生DateTimeField,重写它在MSSQL环境下的数据库类型映射逻辑,确保生成datetime2(7)类型:

from django.db import models

class DateTime2Field(models.DateTimeField):
    def db_type(self, connection):
        if connection.vendor == 'mssql':
            return 'datetime2(7)'
        # 其他数据库保持原生逻辑
        return super().db_type(connection)

之后在模型中用这个自定义字段替代原生DateTimeField即可:

class YourModel(models.Model):
    CreatedDate = DateTime2Field(auto_now_add=True)
    # 其他模型字段...

执行迁移命令后,MSSQL中对应的字段就会被创建为datetime2(7)类型,完全满足需求。

方法二:修改后端库字段映射(不推荐)

如果不想自定义字段,可以直接调整django-mssql-backend的默认字段映射:

  • 找到库安装路径下的sql_server/pyodbc/base.py文件
  • 定位到_data_types字典,将DateTimeField对应的datetimeoffset(7)值改为datetime2(7)

注意:这种方法会被后续的库版本更新覆盖,每次升级后都需要重新修改,因此仅作为临时方案使用。


内容的提问来源于stack exchange,提问作者Furkan Bulut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:34:55