django - Django 3 CheckConstraints m2m 字段
问题描述
我想将数据库约束添加到我的模型中,这要求至少其中一个字段不为空。检查 m2m 字段时,我收到 FieldError: Cannot resolve keyword '' into field。
是否可以创建这样的约束?
示例代码:
class A(Model):
id = AutoField()
url = ManyToManyField(Url, blank=True)
description = TextField(null=True, blank=True)
class Meta:
constraints = [CheckConstraints(
check=(Q(description__isnull=False) | Q(url__isnull=False))),
name="someName"
)]
解决方案
使用 CheckConstraint 功能无法实现此目的。Django 将所有 ORM 命令转换为低级 DB 特定命令,即使在 DB 级别也无法创建此类约束。事实上,我们可以将 CheckConstraint 应用于仅添加/更新的单行。
推荐阅读
- python - 如何通过python终止shell程序
- promise - 法罗承诺:
- arcore - 使用 arcore 更改场景形式中表面的图像搜索
- regex - 提取shell中get参数的值
- string - 如何根据文本文件修改日期搜索关键字?
- angular - Atlasian Elastic Bamboo 构建错误:Angular CLI 构建的打开文件过多错误
- php - PHP json编码到JS没有得到完整的HTML
- c++ - 使用 CMake 构建可移植 Python C-API
- android - 找不到 Firestore Android 的 whereArrayContains() 方法
- system-verilog - 将字段从一个类复制到序列项中的另一个