python - Django IntegerField 在使用 MySQL 时检索 0 作为 None 值
问题描述
Django 已经开始检索我的所有值为零的 IntegerField 作为 None 而不是零。
这发生在我所有的模型中。我最近更新了 mysql-connector-python,所以我不确定这是否是问题所在。
有谁知道会导致 Django 在我的所有模型中开始执行此操作的全局设置或错误?
例子:
class Brands(models.Model):
brand_id = models.AutoField(primary_key=True)
brand_name = models.CharField(unique=True, max_length=512)
blacklisted = models.IntegerField()
blacklisted_date = models.DateTimeField(blank=True, null=True)
date_created = models.DateTimeField()
class Meta:
managed = False
db_table = 'brands'
黑名单的值都被检索为 None 而不是 0。它们在数据库中存储为 0。
Django 版本 2.2.1
MySQL InnoDB
感谢您的任何帮助,您可以提供。
解决方案
此错误的解决方法:添加'use_pure': True
到数据库选项。这迫使 mysql-connector-python 使用纯 python 连接而不是 C 扩展,我相信错误存在,请参见此处
DATABASES = {
'default': {
'ENGINE': 'mysql.connector.django',
'NAME': os.environ['MYSQL_DATABASE'],
'USER': os.environ['MYSQL_USER'],
'PASSWORD': os.environ['MYSQL_PASSWORD'],
'OPTIONS': {
'use_pure': True,
}
}
或者,您可以在 settings.py 文件中进行设置
'OPTIONS': {'use_pure': True }
推荐阅读
- python - 如何根据列表中的部分键重新排列有序字典
- terminal - 如何安装 netCDF4?
- excel - 如何在具有额外(非日期)列的数据透视表中对日期进行分组
- python - range() 中的计数器无法识别为整数
- javascript - 如果修改了数据库表,则对 Vue 组件进行实时更改
- python - 解析 .txt 文件时出现问题
- php - 获取第一个产品的第一个标签列表
- c# - C# 程序从命令行打开 Word docx(不是 doc),在 Jenkins 中失败
- django - Django ORM相关管理器为过滤器添加默认值
- types - 进入
vs Iterator 用于在线算法