django - 如何 OR Django 模型字段验证器?
问题描述
有谁知道如何将 Django 模型字段验证器组合在一起?
像这样的东西:
example_field = models.CharField(max_length=255, validators=[validator1|validator2])
我猜有一种方法,它涉及 Q 运算符,但我找不到它到底是什么。
解决方案
您可以在函数本身中进行验证:
from django.core.exceptions import ValidationError
from django.db import models
def combined_validator(value):
try:
return validator1(value)
except ValidationError:
return validator2(value)
class MyModel(models.Model):
example_field = models.CharField(
max_length=255,
validators=[combined_validator]
)
如果validator1
没有检测到任何故障,则返回控制流,这样我们就安全了。如果它引发了 a ValidationError
,那么我们回退到validator2
。如果这不会引发错误,那么我们又是安全的。否则,错误将由combined_validator
.
推荐阅读
- angular - 在 Angular 组件中测试 IntersectionObserver
- python - 如何使服务器响应字典列表?
- json - 有没有更好的方法来服务和编码来自 FastAPI 的大型 SQLAlchemy 数据集?
- python - 将 SQLite3 数据库中的所有表合并到一个 pandas 数据框中
- javascript - NaN 同时使用 momentjs 找到差异
- ruby - 在 ruby 中杀死整个进程树
- c# - 实现 Scrutor 但仅在少数方法上扩展缓存
- javascript - 使用 requestFrameAnimation 制作的小游戏(参见 codepen)的循环以用户输入的命令延迟执行
- vb.net - 在特定时间播放声音 - Winmm.dll - VB.Net
- parsing - 如何在网页抓取期间将其他参数传递给scrapy中的蜘蛛解析函数