- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个 Q 对象来表示
Either one of these 4 fields is not null, or this field is not true
我有一个包含 4 类价格和可用标志的标准化表格
price_A
price_B
price_C
price_D
available_on_the_store
我希望至少填充其中一个价格,然后才能在带有 Q 对象的 CheckConstraint 上将其标记为 available_on_the_store
我可以很容易地用一个巨大的 Q 链来做到这一点,或者可以很容易地将它写在 .clean() 中并在 python 端强制它,但我希望它在数据库级别;所以请相应地回答。
最佳答案
你可以这样写:
Q(available_on_the_store=False) |
Q(price_A__isnull=False) |
Q(price_B__isnull=False) |
Q(price_C__isnull=False) |
Q(price_D__isnull=False)
或者我们可以把它写得更短:
Q(
('available_on_the_store', False),
('price_A__isnull', False),
('price_B__isnull', False),
('price_C__isnull', False),
('price_D__isnull', False),
<b>_connector=Q.OR</b>
)
因此,您可以制作如下所示的模型:
class MyModel(models.Model):
# …
class Meta:
constraints = [
models.CheckConstraint(
Q(
('available_on_the_store', False),
('price_A__isnull', False),
('price_B__isnull', False),
('price_C__isnull', False),
('price_D__isnull', False),
_connector=Q.OR
),
name='one_price_not_null_if_avaiable'
)
]
关于python - CheckConstraint 的 Q 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62615913/
如果这是我的模型: class Bid(models.Model): amount = models.DecimalField(max_digits=11, decimal_places=2)
我有一个 Django 模型,其中每个实例都需要一个从三个字段派生的唯一标识符: class Example(Model): type = CharField(blank=False, nul
我正在尝试编写一个 Q 对象来表示 Either one of these 4 fields is not null, or this field is not true 我有一个包含 4 类价格和可
以下约束: models.CheckConstraint(name='approved_by_someone', chec
在创建新记录之前,我想检查 native_linux_user 组合的条件和 is_active是独一无二的,但是 is_active必须是 True .多个 native_linux_user与 i
我想在我的 Django 模型中添加一个约束。我认为 CheckConstraint 方法有助于在输入不满足约束条件时捕获错误。但是,当我使用无效输入保存模型时,例如百分比 = 101,显示带有 In
考虑下面的例子,我怎样才能使约束根据给定的正则表达式起作用? 在这种情况下,我在 Flask 应用程序中使用 SQLAlchemy。 class user(db.Model): iduser
我有这些模型: class Container(models.Model): ... class Meta: constraints = [ m
我正在尝试在基类中使用单个 CheckConstraint 创建基模型。当我将基类混合到 flask-sqlalchemy 模型中并尝试使用它时,我得到“无法将未命名的列添加到列集合”。 我试着用不同
SQL Azure 上是否有替代 DBCC CHECKCONSTRAINTS 的方法?我可以想象,例如,编写一个存储过程来枚举所有约束并生成动态 SQL 来测试它们(例如“select t1.* fr
我是一名优秀的程序员,十分优秀!