问题标签 [django-constraints]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - 两个字段之间的唯一约束,无论顺序如何
该程序有一个表示两个用户之间关系的表:
问题出在约束中,到目前为止我定义的约束是:
第一个检查之间的唯一约束,第二个(user_from, user_to)
检查user_from
isuser_to
与正在创建。user_from=user1
user_to=user2
user_from=user2
user_to=user1
是否存在某种形式来添加此约束?或者解决方案是仅在应用程序层创建约束?例如覆盖保存方法并检查此约束。
django - Django 约束:允许一个字段与另一个字段只有一个组合,同时仍保留历史数据
我正在尝试在我的 Offer 表上创建一个约束,该表有一个 offer_id(字符字段)和一个 product_id(外键),其中一个 offer_id 只能与 1 个产品组合。不允许将 offer_id 与多个产品组合。
我不能让 offer_id 简单地唯一,因为该表使用历史数据。如何为我的 django 模型进行约束,以确保每个 offer_id 最多链接到 1 个产品,一个产品可以有多个 offer_id,并且由于历史数据,一个 offer_id 和 product_id 可以多次出现。
报价模型的简单概述:
django - 如何在 Django 中实现广义唯一性 DB 约束 (A,B) 和 (B,A)?
我想在使用字段 one='a' 和 two='b' 创建对象之前检查数据库,如果数据库已经有字段 one='b' 和 two=' 的行,则不创建(抛出异常) a'(倒序)。即保证(一,二)和(二,一)中只有一个存在。这就像一个广义的唯一性约束。
我正在使用 Django 3.2。
我看到CheckConstraint支持 boolean Expression,一种类型的表达式是聚合。所以我可以想象测试 (one, two) 和 (two, one) 的行数最多为 1。但是,这听起来很昂贵,而且我也没有看到如何在 CheckConstraint 中使用 Count 的示例.
或者,我可以实现一个发出查询的pre_save信号。这似乎更好,因为我手头有数据来形成查询。但是,我看不到如何使用 pre_save 信号来防止保存。它有我可以使用的返回值吗?我在文档中没有看到。
编辑:第三种选择可能会覆盖save
进行检查。
我也对其他想法持开放态度。
django - 使用继承类中的字段的 Django 模型约束条件 - 可能吗?
我想使用父类中的字段作为子类中的约束条件。
模型.py
当我尝试迁移时,我在终端中看到此错误:
很明显,为什么我会看到此错误(is_public
字段位于ParentClass
)。我的问题是,那是不可能的,还是我可以重构一些东西?
我的最终目标是什么?
不让实例ChildClass
is_pulic
更改为True
if the price
is null
。我想在数据库级别强制执行此操作。
有没有办法,如果有,需要改变什么?
python - 约束 unique_together 可能与 dajngo 类中的 unique_field 冲突
我想知道使用约束unique_together
以及unique=true
属于unique_together
.
我无法删除unique=true
我的字段的参数,因为它在另一个模型中用作外键。
如您所见,目标是使字段的组合fiscal_number
独一无二email
。
django - Django CheckConstraints 检查 start_date 是否大于或等于今天
像上面的代码一样,我想添加 CheckConstraint 来检查 start_date 是否大于或等于今天。
但是,在 makemigration 和 migrate 之后,发生了错误。
functions or expression 'CURRENT_TIME' cannot be userd in check clause
我尝试了两种方法。
第一的。
但是,迁移文件具有 timezone.now() 方法的结果,例如 datetime(2022, 01, 06, tzinfo=<UTC>)
第二。
和
function cannot be resolved
当我尝试迁移时,此试验会出错。
如何查看 start_date 和今天?
提前感谢并为我的英语技能道歉。
django - Django 多对多约束验证
我正在尝试创建一个约束来检查两个字段是否都具有虚假值。这些字段之一是布尔值,另一个是 m2m,如下所示:
这让我'constraints' refers to a ManyToManyField 'target_groups', but ManyToManyFields are not permitted in 'constraints'.
无论如何我可以在创建/更新时检查是否public
为空True
?target_groups
我检查了这个和这个。
例如,我尝试对save
方法进行验证,如下所示:
但是条件self.target_groups
总是假的,我认为这是有道理的,因为对象还没有添加到集合中,但是我如何验证从请求中传入的数据呢?我使用 DRF,我已经可以在序列化程序上验证它,但是管理员也可以通过 Django admin 添加它,所以我试图在模型级别验证它。
我很欣赏任何见解。