Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
布尔值上的Django queryset筛选器不工作_Django_Django Models - Fatal编程技术网

布尔值上的Django queryset筛选器不工作

布尔值上的Django queryset筛选器不工作,django,django-models,Django,Django Models,我有一个模型: class mymodel(models.Model): order_closed = models.BooleanField(default=False) 我手动将此字段添加到我的开发mysqllite数据库中,因为它是已经存在的模型/表的新字段。然后我试着: mymodel.objects.filter(order_closed=False) #and with True 并产生不正确或不可预测的结果。我看到有人提到这可能是sqllite的东西,但我不确定?模板似

我有一个模型:

class mymodel(models.Model):
    order_closed = models.BooleanField(default=False)
我手动将此字段添加到我的开发mysqllite数据库中,因为它是已经存在的模型/表的新字段。然后我试着:

mymodel.objects.filter(order_closed=False) #and with True
并产生不正确或不可预测的结果。我看到有人提到这可能是sqllite的东西,但我不确定?模板似乎理解它是真值还是假值,但python代码不理解。举例说明:


{{mymodel.order_closed}}将在我在sqllite中将默认值设置为0后打印0。但是使用.filter(order\u closed=value)仍然会返回每条记录。

我认为您在编写SQL时犯了一些错误。如果你有数据库,其中有一些重要的信息使用

south

当您拥有它时,您可以轻松地升级/编辑您的数据库

如果你不想安装新的“插件”,试试这个。 1.手动从数据库中删除此字段。 2.写入:python manage.py sql“应用程序名称”

它将返回应用程序的CREATETABLE SQL语句


然后,您可以使用一些CReate命令手动升级数据库。

我建议您不要将sqlite用作开发数据库。Sqlite太“温和”。例如,如果创建CharField(max_length=20),sqlite允许您写入30或100个符号。当您开始迁移到PostgreSQL或MySQL时,您会遇到一些问题。当您说“手动添加”时,听起来好像您一直在编写SQL。我认为你不想那样做。尝试删除该字段,然后使用python manage.py syncdb创建它(syncdb将从您的模型中创建它)。看看这是否能解决问题。检查数据库中的值。添加新字段时,不会将“默认”值设置为数据库中较旧的对象。所以它们可能是“null”而不是“False”