Как избежать бесконечной рекурсии в самореферентных отношениях «многие ко многим» - PullRequest
1 голос
/ 16 октября 2019

Чтобы внедрить систему делегирования в мое приложение Django, у меня есть самообращающаяся связь «многие ко многим» в моей модели «персона»:

from django.contrib.auth.models import AbstractUser
from django.db import models

class Person(AbstractUser):
    delegates = models.ManyToManyField("self", symmetrical=False, blank=True, null=True, default=None)

Я считаю, что есть две ловушки (способыинициировать бесконечные рекурсии) для этого подхода:

  1. Если пользователь A назначил себя делегатом (возможно, глупо, но выполнимо)
  2. Если пользователь A установил пользователя B в качестве делегата, а пользователь B установил пользователя Aв качестве делегата

Каков был бы правильный подход, чтобы избежать таких случаев?

...