Django - 从所有记录的查询集开始,然后根据连续过滤器删除一些?

时间:2014-03-20 21:36:09

标签: django

假设我的模型看起来像这样:

My Model:
  isBig = Boolean
  isRound = Boolean
  isBlue = Boolean
  isStraight = Boolean

现在,我需要获取这些记录的特定过滤集。我可能需要具有isBig=TrueisBlue=True的集合,或者我可能需要将所有字段设置为true的集合。也许还有一次,我需要将所有字段设置为false的集合。基本上我不知道在运行之前我还需要什么。

由于使用一堆链接在一起的.filter进行查询是不可行的(只有4个字段,有256种不同的组合,我的实际模型有8个字段)我的方法到目前为止,但它没有给我我想要的东西:

# start with all records
myQS = My_Model.objects.all()
# peel off a group of records based on each criteria
if not isBig:
  myQS = myQS.exclude(isBig=False)
if not isRound:
  myQS = myQS.exclude(isRound=False)
if not isBlue:
  myQS = myQS.exclude(isBlue=False)
if not isStraight:
  myQS = myQS.exclude(isStraight=False)

所以,我从所有记录开始,然后遍历每个字段,试图使myQS越来越小,剥离我不想要的记录。

为什么这不起作用,我的逻辑如何关闭?

编辑更改了我的if语句以避免分配。

为清楚起见,当我说“不工作”时,我得到的结果与我期望的完全相反。因此,如果我想要包含isBlue = True的所有记录而不是其他内容,我实际上会获得所有字段TrueisBlue = False的所有记录 - 与我期望的完全相反。

0 个答案:

没有答案
相关问题