1

我有这样的模型

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

看起来这个字段中没有任何值,因为在我在模型中创建这个字段之前有 vas crated

4

1 回答 1

0

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

Post.objects.exclude(recommended=True)

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

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

更改表以包含NOT NULL在列定义中也很好。

于 2013-09-24T13:56:10.877 回答