在Django中自动为新的教师创建新用户 [英] Auto Create new User for new teanants in django
问题描述
我正在尝试使用 tenant-schema 包开发多租户Web应用程序。一切正常,这里缺少的是自动为新租户创建新用户的一件事。我知道我们可以使用此命令创建新的超级用户
I'm trying to develop multi tenants web applications using tenant-schema packages. Every things is working fine, Here one thing is missing that is automatically create new user for new tenants. I know we can create new super user using this command
python manage.py tenant_command createsuperuser --schema=schema_name
但是我想根据用户提供的信息自动创建新用户
But i want to automatically create new user on basis of information provided by the user
这里我正在使用api创建租户,
Here I'm creating tenants using api,
api_view.py
def post(self, request):
serializer = ClientSerializer(data=request.data)
if serializer.is_valid():
try:
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
except Exception as e:
return Response({'info': 'Unable to create tenant'})
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
租户模型
class Client(TenantMixin):
name = models.CharField(max_length=100)
paid_until = models.DateField()
on_trial = models.BooleanField()
created_on = models.DateField(auto_now_add=True)
auto_create_schema = True
serializers.py
serializers.py
from rest_framework import serializers
from .models import Client
class ClientSerializer(serializers.ModelSerializer):
class Meta:
model = Client
fields = ['id', 'domain_url', 'schema_name', 'name', 'paid_until', 'on_trial', 'created_on']
在这里,我想自动创建新的超级用户。我不知道该怎么做,任何建议都将不胜感激。
Here i want to create new superuser automatically. I didn't know how to do, any suggestion would be appreciated.
推荐答案
您可以使用django 发布保存信号。
You could use django post save signals.
例如在models.py中:
For example in models.py:
from django.dispatch import receiver
from tenant_schemas.utils import tenant_context
from django.contrib.auth.models import User
@receiver(post_save, sender=Client):
def create_superuser(instance, **kwargs):
if 'created' in kwargs: # tests if this client was created
tenant=instance
with tenant_context(tenant):
# Create the superuser by using the new client tenant schema
User.objects.create_user(
# insert your user data here
)
这篇关于在Django中自动为新的教师创建新用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!