Я пишу модель 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)