如何在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
相关产品推荐
相关产品推荐

