Фильтр Django некорректно работает с логическим полем - PullRequest
0 голосов
/ 26 октября 2018

У меня очень простой запрос для фильтрации, но я действительно не могу понять, почему он дает мне неправильный результат.

Это мой код -

    for s in sqs:
        print(s.is_draft)
    sqs = sqs.filter(is_draft=False)
    print('----------------------')
    for s in sqs:
        print(s,s.is_draft)

То, что я получаю, -

<SearchResult: products.productcreatemodel (pk='82')> False
<SearchResult: products.productcreatemodel (pk='87')> False
<SearchResult: products.productcreatemodel (pk='94')> False
<SearchResult: products.productcreatemodel (pk='99')> False
<SearchResult: products.productcreatemodel (pk='101')> False
<SearchResult: products.productcreatemodel (pk='106')> False
<SearchResult: products.productcreatemodel (pk='118')> False
<SearchResult: products.productcreatemodel (pk='84')> False
<SearchResult: products.productcreatemodel (pk='91')> False
<SearchResult: products.productcreatemodel (pk='96')> False
<SearchResult: products.productcreatemodel (pk='103')> False
<SearchResult: products.productcreatemodel (pk='108')> False
<SearchResult: products.productcreatemodel (pk='110')> False
<SearchResult: products.productcreatemodel (pk='115')> False
<SearchResult: products.productcreatemodel (pk='85')> False
<SearchResult: products.productcreatemodel (pk='92')> False
<SearchResult: products.productcreatemodel (pk='97')> False
<SearchResult: products.productcreatemodel (pk='104')> False
<SearchResult: products.productcreatemodel (pk='111')> False
<SearchResult: products.productcreatemodel (pk='83')> True
<SearchResult: products.productcreatemodel (pk='95')> False
<SearchResult: products.productcreatemodel (pk='102')> False
<SearchResult: products.productcreatemodel (pk='107')> False
<SearchResult: products.productcreatemodel (pk='119')> False
<SearchResult: products.productcreatemodel (pk='93')> False
<SearchResult: products.productcreatemodel (pk='98')> False
<SearchResult: products.productcreatemodel (pk='100')> False
<SearchResult: products.productcreatemodel (pk='105')> False
<SearchResult: products.productcreatemodel (pk='112')> False
----------------------
<SearchResult: products.productcreatemodel (pk='83')> True

Он должен вернуть мне набор запросов из тех, которые имеют is_draft=False, но в этом вы можете ясно увидеть, что он возвращает мне набор запросов с объектами, имеющими is_draft=True

Теперь магияэто когда я снова изменяю код на sqs = sqs.filter(is_draft=True) результат тот же !!

Это действительно понятно.

...