如何为 Django 模型字段添加检查约束?

2023-12-31

子类化时db.models.Model,有时有必要添加额外的检查/约束。

例如,我有一个Event模型与start_date and end_date:我想将验证添加到字段或模型中,以便end_date > start_date.

至少我知道这可以在外部完成models.Model在 - 的里面ModelForm验证。但是如何附加到字段和models.Model?


从 Django 2.2 开始,数据库级别constraints https://docs.djangoproject.com/en/4.0/ref/models/constraints/#module-django.db.models.constraints支持:

from django.db import models
from django.db.models import CheckConstraint, Q, F

class Event(models.Model):
    start_date = models.DatetimeField() 
    end_date = models.DatetimeField()

    class Meta:
        constraints = [
            CheckConstraint(
                check = Q(end_date__gt=F('start_date')), 
                name = 'check_start_date',
            ),
        ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为 Django 模型字段添加检查约束? 的相关文章

随机推荐