布尔值上的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”