gpt4 book ai didi

python - Django 模型 - 字段依赖

转载 作者:太空宇宙 更新时间:2023-11-03 13:22:26 26 4
gpt4 key购买 nike

我怎样才能有字段依赖?

情况一:如果设置了 bool 字段call_me,则telephone必须设置,否则为空

情况 2:如果多对多字段 category(具有值 salerent)的值之一为 sale ,则必须设置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')

对于案例 2,M2M 关系直到模型保存后才添加,因此在模型上使用 clean 在这种情况下不起作用。但是,您可以通过用于编辑它的任何 ModelFormclean 方法来执行此操作,无论是在管理中还是在您自己的 View 中。

但是,当唯一可能的值是“sale”和“rent”时,将 category 作为 M2M 是糟糕的设计。即便如此,“销售”和“租赁”是相互排斥的,因此 M2M 无论如何都是不合适的(您的模型永远不会同时经历“销售”和“租赁”)。

因此,最好将 category 设置为 CharField,其中 choices 由“sale”和“rent”组成”。如果您这样做,那么您也可以像案例 1 一样使用模型的 clean 方法。

关于python - Django 模型 - 字段依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9568336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com