Python Django IntegerField在使用MySQL时将0检索为无值
Django已开始检索值为零的所有IntegerField,将其作为None而不是零 这在我所有的模型中都有发生。我最近更新了mysql连接器python,所以我不确定这是否是问题所在 有人知道会导致Django在我的所有模型中开始这样做的全局设置或bug吗 例如:Python Django IntegerField在使用MySQL时将0检索为无值,python,mysql,django,Python,Mysql,Django,Django已开始检索值为零的所有IntegerField,将其作为None而不是零 这在我所有的模型中都有发生。我最近更新了mysql连接器python,所以我不确定这是否是问题所在 有人知道会导致Django在我的所有模型中开始这样做的全局设置或bug吗 例如: class Brands(models.Model): brand_id = models.AutoField(primary_key=True) brand_name = models.CharField(unique
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'
被列入黑名单的所有值都将被检索为无,而不是0。
它们作为0存储在数据库中
Django版本2.2.1
MySQL InnoDB
感谢您提供的帮助。此错误的解决方法:向数据库选项添加
'use\u pure':True
。
这迫使mysql连接器python使用纯python连接,而不是C扩展,我相信这个bug存在于C扩展中,请参阅
或者,也可以在settings.py文件中进行设置
'OPTIONS':{'use_pure':True}
您最近是否更改了型号?您可以尝试Python manage.py makemigrations
更新sechema吗?如何检查?您使用什么代码返回None
?@Azy_Crw4282我没有更改大多数型号。我确实增加了一些新型号。我也在这个问题开始的时候运行了一个迁移,但是,我的所有模型都不是由django管理的。我只是尝试了一个新的makemigration和migration,但它没有修复anything@dirkgroten它在测试服务器上显示为“无”。我还覆盖了get_context_数据,添加了一个简单的打印,这些值被打印为NoneGreat,很乐意提供帮助
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,
}
}