Python: если верно более одного из трех пунктов, вернуть false

Я пишу модель django, которая позволяет моему сайту иметь купоны.

Купоны могут быть трех типов: ваучер на пожизненный счет, ваучер на определенный период месяцев, ваучер на определенное количество долларов.

Для простоты я разрешаю купонам иметь одно из трех возможных значений (т. Е. Купон не может быть на 10 долларов и 5 месяцев). Но я хочу проверить, когда купон сохраняется, чтобы убедиться, что это правило верно.

В настоящее время у меня есть:

true_count = 0
if self.months:
    true_count += 1
if self.dollars:
    true_count += 1
if self.lifetime:
    true_count += 1    

if true_count > 1:
    raise ValueError("Coupon can be valid for only one of: months, lifetime, or dollars")  

Я знаю, что есть лучший способ сделать это, но я его не вижу (назовите это блоком кодера).

Помощь очень ценится.

Если это имеет значение, это три типа: int, int и bool

months = models.IntegerField(default=0)
cents = models.IntegerField(default=0)
#dollars = models.FloatField(default=0.00)
#dollars replaced with integer cents per advice of group
lifetime = models.BooleanField(default=False)
9
задан Ted 14 July 2011 в 02:59
поделиться