使用booleanfields值过滤

时间:2013-09-24 12:28:05

标签: django

我有这样的模特

Post (models.Model):
recommended = models.BooleanField (default=False)

当我从模型中获取所有对象时

posts = Post.objects.all()
posts.count() # show equals to 18

posts[0].recommended # equals to False 

但是当我尝试按推荐标签过滤时,即使在模型中,我的总计数也等于0,它们都具有我在过滤器中请求的相同值

 posts = Post.objects.filter(recommended=False)
 posts.count() # show equals to 0

看起来这个字段中没有任何值,因为在我在模型

中创建此字段之前已经过了一些值

1 个答案:

答案 0 :(得分:0)

如果要获取具有False或NULL值的对象,可以这样做:

Post.objects.exclude(recommended=True)

虽然我建议通过发出UPDATE查询来修复您的数据库,该查询会将所有NULL值更改为False(从django shell执行此操作):

Post.objects.filter(recommended__isnull=True).update(recommended=False)

将表更改为在列定义中包含NOT NULL也是一件好事。