Ошибка Flake8 `Сравнение E712 с True должно быть ', если cond равно True:' или 'if cond:'` в django - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь справиться, если условие в Django.

Работает нормально, но появляется ошибка при попытке проверить с помощью flake8 flake8 data/view.py

Мое состояние так:

if user.item.purchase.status == True:

Здесь user, item and purchase is model и статус поля покупки.и Status имеют три значения 1) Undefine 2) True 3) False

Я что-то не так делаю?

Ошибка Flake8 E712 comparison to True should be 'if cond is True:' or 'if cond:'

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Хорошо, если status является логическим значением , тогда странно писать expr == True, поскольку True == True равно True, а False == True равно False, мы можем простовместо этого напишите expr.

Если, с другой стороны, status является чем-то, что не само по себе логическое , то сравнение попытается проверить, еслизначение объекта равно - True, которое может быть различным, но обычно странно, что какой-то объект равен True или False.Например, 1 == True имеет место, но 1 и True являются различными объектами.

В случае, если status является чем-то, что может быть не логическим, и вы хотитепроверьте, является ли статус действительно True (т.е. не равенство значение , а ссылка равенство), тогда можно использовать проверку is, поскольку exp1 is exp2 проверяет, ссылаются ли две переменные на один и тот же объект .

Если вы, однако, записываете выражение как условие, например if expr, то Python оценивает истинность этого выражения.Например, достоверность непустого списка равна True, тогда как для пустой коллекции это обычно False.Поскольку истинность True и False равняется True и False соответственно, в этом случае нет необходимости писать == True.

Я думаю, что здесь status, вероятно, являетсяBooleanField, поэтому в этом случае вы можете написать:

if <b>user.item.purchase.status:</b>
    # ...
    pass
0 голосов
/ 13 июня 2018

В сообщении об ошибке говорится, что вы используете этот синтаксис.

if user.item.purchase.status:
    #Do Stuff

Вам не нужно упоминать == True

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...