带有布尔字段的 Django If 语句不起作用
Django If statement with boolean fields not working
我正在从这样的查询集中获取布尔值:
activo = Carros.objects.all().values_list('is_active', flat=True).filter(nombre='carro')
那么我的 if 声明是这样的:
if activo == True:
raise forms.ValidationError('El Auto está activo')
即使变量 'activo' 获得 True 值,它也不会 return ValidationError。
我做的是设置一个变量
a = True
然后在if语句中加入
if activo == True:
raise forms.ValidationError('El Auto está activo')
而且有效。
在 Python shell 中,每当我执行查询时,我都会看到这样的结果
<QuerySet [True]>
我不确定是什么问题。
模型中的'is_active'字段:
is_active = models.BooleanField(blank=False, null=False, default=True)
注:数据库为Postgresql
将 '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 }
编辑:
由于您的输出正在重新调整查询集,因此您需要检查该值以确保其为真。你可以这样做
activo = <your query set>
print(activo[0])#should return True
if activo[0]:
raise forms.ValidationError('El Auto está activo')
我正在从这样的查询集中获取布尔值:
activo = Carros.objects.all().values_list('is_active', flat=True).filter(nombre='carro')
那么我的 if 声明是这样的:
if activo == True:
raise forms.ValidationError('El Auto está activo')
即使变量 'activo' 获得 True 值,它也不会 return ValidationError。
我做的是设置一个变量
a = True
然后在if语句中加入
if activo == True:
raise forms.ValidationError('El Auto está activo')
而且有效。
在 Python shell 中,每当我执行查询时,我都会看到这样的结果
<QuerySet [True]>
我不确定是什么问题。
模型中的'is_active'字段:
is_active = models.BooleanField(blank=False, null=False, default=True)
注:数据库为Postgresql
将 '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 }
编辑:
由于您的输出正在重新调整查询集,因此您需要检查该值以确保其为真。你可以这样做
activo = <your query set>
print(activo[0])#should return True
if activo[0]:
raise forms.ValidationError('El Auto está activo')