Ограничения django в многопользовательском приложении

У меня есть многопользовательское приложение, в котором мы используем мультивалютность.

Упрощенные модели выглядят следующим образом:

class Currency(models.Model):
    multi_tenant_company = models.ForeignKey(MultiTenantCompany, on_delete=models.CASCADE)
    is_default_currency = models.BooleanField(default=False)

Теперь я хочу добавить уникальное ограничение db на эту модель, где каждая многоарендная_компания может иметь только 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.

Вернуться на верх