RS7*_*RS7 3 python django validation model
我怎么能有字段依赖?
情况1:如果call_me
设置了布尔字段,则telephone
必须设置,否则它应该为空
案例2:如果多个到多个字段category
(具有值销售,租金)具有作为销售的值之一,则price_sale
必须设置,否则它应该为空
对于案例1,您可以在模型的clean
方法中轻松验证:
from django.core.exceptions import ValidationError
class MyModel(models.Model):
...
def clean(self):
if self.call_me and not self.telephone.strip():
raise ValidationError('Telephone is required')
Run Code Online (Sandbox Code Playgroud)
对于案例2,在保存模型之前不会添加M2M关系,因此clean
在此模型中使用模型将不起作用.但是,您可以使用clean
任何ModelForm
用于编辑此方法的方法执行此操作,无论是在管理员还是您自己的视图中.
然而,category
当唯一可能的值是"销售"和"租赁"时,作为M2M,是糟糕的设计.即便如此,"销售"和"租赁"是相互排斥的,因此无论如何M2M都是不合适的(您的模型将不会同时经历"销售"和"租赁").
其结果是,这将是一个更好的主意,有category
是CharField
有choices
由"出售"和"租金"的.如果你这样做,那么你也可以clean
像案例1一样使用模型的方法.