Django/Python: сигнал post_save - ожидается строка или байтоподобный объект
У меня есть сигнал post_save, который не работает с ошибкой 'ожидается строка или байтоподобный объект'. Я не уверен почему, это вызвано вызовом create_user ниже:-
Это для создания пользователя в схеме арендатора для вновь созданного арендатора:
@receiver(post_save, sender=Client)
def create_user(sender, instance, created, **kwargs):
if created:
tenant=instance
with schema_context(tenant):
name = 'name'
email = 'name@email.com'
password = 'passwordexample'
user = CustomUser.objects.create_user(name, email, password)
Базовым менеджером пользователя, который выбрасывает исключение, является
def create_user(self, name, email, password, **extra_fields):
"""
Create and save a User with the given email and password.
"""
if not email:
raise ValueError(_('The Email must be set'))
name = self.normalize_email(name)
email = self.normalize_email(email)
user = self.model(name=name, email=email, **extra_fields)
user.set_password(password)
user.save()
return user
Похоже, что это не удается при user.save() в вышеуказанном менеджере
Любая помощь или подсказки очень ценятся
Спасибо
Я думаю, что проблема, с которой вы столкнулись, не в Custom user manager, а в
with schema_context(tenant)
поскольку этот schema_context принимает имя схемы, а не арендатора поэтому я думаю, что вам нужно передать имя схемы. или, если вы знаете арендаторов, используйте следующее вместо этого
from django_tenants.utils import tenant_context
with tenant_context(tenant):
# All commands here are ran under the schema from the `tenant` object