Python: if more than one of three things is true, return false

前端 未结 11 2538
温柔的废话
温柔的废话 2021-02-14 01:33

I\'m writing a django model that allows my site to have coupons.

Coupons can have three types: lifetime account voucher, certain period of months voucher, certain numb

11条回答
  •  青春惊慌失措
    2021-02-14 02:02

    You could also use a list comp to filter false values:

    if len([x for x in [self.months, self.dollars, self.lifetime] if x]) > 1:
        raise ValueError()
    

    Or building off MRAB's answer:

    if sum(map(bool, [self.months, self.dollars, self.lifetime])) > 1:
        raise ValueErrro()
    

提交回复
热议问题