带有布尔字段的 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')