'At least one of these fields must be filled' - 我可以在 Django 模型中强制执行此要求吗?



下面是一个用例:

class Tweet(models.Model):
url_1 = models.CharField(max_length=140)
url_2 = models.CharField(max_length=140)
url_3 = models.CharField(max_length=140)

我希望用户为每个Tweet实例指定至少一个URL。

我知道如何在views.py中强制执行此条件,但我想知道是否有一种方法可以配置Django模型,以便在保存实例之前要求用户填写给定模型字段集中的至少一个。我认为那样会更干净。

谢谢!

这不能在模型级别完成,但是可以在数据库级别添加约束来强制执行。

从Django 1.2开始,你可以使用clean()方法来做这样的检查。https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs django.db.models.Model.clean

最新更新