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 扩展,我相信该错误存在于其中,请参阅 here
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 - 使用 MySQL 时,Django IntegerField 将 0 作为 None 值检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60379449/