Django UniqueConstraint на удаленной модели
У меня есть модели, подобные этой. Основные отношения заключаются в том, что auth.Group
может иметь несколько проектов, и несколько заказов могут быть связаны с каждым проектом.
Упрощенная версия:
from django.db import models
class Project(models.Model):
group = models.ForeignKey("auth.Group", on_delete=models.SET_NULL, null=True)
class Order(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE)
external_id = models.CharField(max_length=255)
У орденов есть external_id
, которые связывают их с другой системой. Они должны быть уникальными на auth.Group
уровне .
Я знаю, что могу это сделать:
class Order(models.Model):
group = models.ForeignKey("auth.Group", on_delete=models.SET_NULL, null=True)
project = models.ForeignKey(Project, on_delete=models.CASCADE)
external_id = models.CharField(max_length=255)
class Meta:
constraints = (
models.UniqueConstraint(
fields=["group", "external_id"], name="unique_external_id_per_group"
),
)
Но я не хочу копировать отношения group
на заказ.
Я попробовал следующее:
class Meta:
constraints = (
models.UniqueConstraint(
fields=["project.group", "external_id"], name="unique_external_id_per_group"
),
)
и:
class Meta:
constraints = (
models.UniqueConstraint(
fields=["project__group", "external_id"], name="unique_external_id_per_group"
),
)
Но я просто получаю 'constraints' refers to the nonexistent field 'project.group'.