gpt4 book ai didi

django - 我可以在Django模型上至少要求一个字段吗?

转载 作者:行者123 更新时间:2023-12-03 12:10:11 26 4
gpt4 key购买 nike

假设我有一个人物模型:

class Person(models.Model):
name = models.CharField(max_length=50)

email = models.EmailField()
telephone = models.CharField(max_length=50)

我想为每个人确保有联系信息。我不需要电子邮件和电话(虽然都可以),但我需要确保至少提供了一个。

我知道我可以检查表单中的内容,但是有什么方法可以在模型/数据库级别执行此操作以免重复我自己?

最佳答案

为您的模型编写一个 clean 方法。

from django.core.exceptions import ValidationError


class Person(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField()
telephone = models.CharField(max_length=50)

def clean(self):
if not (self.email or self.telephone):
raise ValidationError("You must specify either email or telephone")

如果您使用模型形式(例如,在Django admin中),则Django将为您调用 clean方法。或者,如果直接使用ORM,则可以在实例上手动调用 full_clean() 方法。

关于django - 我可以在Django模型上至少要求一个字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31831620/

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