多租户应用程序中的 django 约束

问题描述 投票:0回答:1

我有一个多租户应用程序,我们使用多种货币。

简化模型如下所示:

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')
        ]

我错过了什么?

django unique-constraint django-constraints
1个回答
0
投票

看来答案似乎是

class Meta:
    constraints = [
        models.UniqueConstraint(
            fields=['multi_tenant_company'],
            condition=Q(is_default_currency=True),
            name='unique_is_default_currency')
    ]

在此版本中,条件仅适用于字段 multi_tenant_company uniqueness。

© www.soinside.com 2019 - 2024. All rights reserved.