Почему я получаю 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      
            
Вернуться на верх