Хорошо, если 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