Почему я получаю NONE при сравнении двух булевых чисел?
У меня есть модель с методом, который сравнивает аргумент test
с аргументом self.yes_no
, self.value
или self.tag
в модели. Проверяемое поле определяется параметром self.condition
в модели. Это прекрасно работает для меня, пока я не ввел сценарий условия "bool". Я вернул оператор печати, чтобы убедиться, что булевы сохраняются :
print(test,self.condition)
>> (True, True)
Однако при сравнении их в операторе "bool" if я получаю "NONE". Может ли кто-нибудь пролить свет на это?
class Referral(models.Model):
condition_choices = (
("greater", "Greater Than"),
("less", "Less Than"),
("bool", "Yes or No"),
("contains", "Contains"))
tag = models.ManyToManyField(Keyword, blank=True)
condition = models.CharField(max_length=50,
choices=condition_choices,
blank=True)
yes_no = models.BooleanField(null=True, default=True)
value = models.PositiveBigIntegerField(null=True, blank=True)
def trigger(self, test):
print(test,self.condition)
match self.condition:
case "greater":
print("greater")
if test>self.value:
return True
case "less":
print("less")
if test<self.value:
return True
case "bool":
print(test, self.yes_no)
if test == self.yes_no:
return True
case "contains":
print("contains")
words = test[0].split()
keywords = Keyword.objects.filter(tag__contains = words)
print(keywords.values())
if keywords.exists():
return True
case _:
print("nothing")
return False