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 и правильно создать клиента с его владельцем?
Заранее благодарю.