我有一个多租户应用程序,我们使用多种货币。
简化模型如下所示:
class Currency(models.Model):
multi_tenant_company = models.ForeignKey(MultiTenantCompany, on_delete=models.CASCADE)
is_default_currency = models.BooleanField(default=False)
现在我想在此模型上添加一个唯一的数据库约束,其中每个 multi_tenant_company 只能有 1 种默认货币。
我目前失败的方法是:
class Meta:
constraints = [
models.UniqueConstraint(
fields=['is_default_currency', 'multi_tenant_company'],
condition=Q(is_default_currency=True),
name='unique_is_default_currency')
]
我错过了什么?
看来答案似乎是
class Meta:
constraints = [
models.UniqueConstraint(
fields=['multi_tenant_company'],
condition=Q(is_default_currency=True),
name='unique_is_default_currency')
]
在此版本中,条件仅适用于字段 multi_tenant_company uniqueness。