Django-Tenant-Users: ошибка целостности в permissions_usertenantpermissions_profile_id_key при создании клиента

Я использую Django с django-арендаторами и django-пользователями-арендаторами для управления учетными записями нескольких арендаторов. У меня возникла проблема при создании нового арендатора:

Когда я пытаюсь создать нового пользователя + его клиента в моем представлении, я получаю следующую ошибку:

django.db.utils.IntegrityError: ERROR: Duplicate key value breaks unique constraint 'permissions_usertenantpermissions_profile_id_key'
DETAIL: Key '(profile_id)=(8)' already exists.

Я даже очистил таблицу и попробовал, но, несмотря на это, ошибка осталась

Вот код для моего просмотра school_login:

def school_login(request):
    if request.method == 'POST':
        form = CreateSchoolForm(request.POST)
        if form.is_valid():
            sigle = form.cleaned_data['sigle']
            slug = form.cleaned_data['sigle'].lower()
            email = form.cleaned_data['email']
            password = form.cleaned_data['password']

            # Create the user
            user = SchoolUser.objects.create_user(
                email=email,
                password=password,
            )
            user.role = 'director'
            user.is_verified = True
            user.save()

            # Create the tenant
            tenant, domain = provision_tenant(
                tenant_name=sigle,
                tenant_slug=slug,
                owner=user,
                is_superuser=True,
                is_staff=True,
            )

            # Authenticate and login
            authenticated_user = authenticate(request, username=email, password=password)
            if authenticated_user:
                login(request, authenticated_user)
                tenant_domain = get_tenant_domain_model().objects.get(tenant=tenant).domain
                return HttpResponseRedirect(f"http://{tenant_domain}/")

    else:
        form = CreateSchoolForm()
    return render(request, 'school_login.html', {'form': form})

Вот код моделей.py в общем приложении:

class SchoolUser(UserProfile):
    ROLE_CHOICES = (
        ('director', 'Directeur'),
        ('accountant', 'Comptable'),
    )
    role = models.CharField(max_length=20, choices=ROLE_CHOICES, default='accountant')

    def is_director(self):
        return self.role == 'director'

    def is_accountant(self):
        return self.role == 'accountant'

class School(TenantBase):
    name = models.CharField(max_length=100)  # Ajout du champ name
    created_on = models.DateField(auto_now_add=True)

    def __str__(self):
        return self.name

class Domain(DomainMixin):
    pass

Что я пробовал:

  • Очистка всех данных в базе данных → та же ошибка.
  • Проверяю, вызываю ли я tenant.add_user() дважды → вызывается только один раз.
  • Проверка сигналов post_save → в моем проекте нет ничего особенного.
  • Настройка settings.py

Почему provision_tenant пытается дважды создать один и тот же профиль пользователя в permissions_usertenantpermissions, хотя я вызываю его только один раз?

Как я могу исправить эту ошибку IntegrityError и правильно создать клиента с его владельцем?

Заранее благодарю.

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