Ограничения 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.