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'.

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