Ytech Pythonの:
私が使用したマルチテナントのWebアプリケーションを開発しようとしているテナント・スキーマのパッケージを。すべての物事が正常に動作している、ここに1つの事は自動的に新しいテナントのための新しいユーザーを作成している欠けています。私たちは、このコマンドを使用して新しいスーパーユーザを作成することができます知っています
python manage.py tenant_command createsuperuser --schema=schema_name
しかし、私は自動的にユーザーから提供された情報に基づき、新規ユーザーを作成したいです
ここで私は、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
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']
ここで私は、自動的に新しいスーパーユーザを作成します。私が行う方法を知りませんでした、任意の提案をいただければ幸いです。
たJuhoルート:
あなたはジャンゴ使用することができます信号保存ポストを。
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
)