首页 > 解决方案 > Client() 得到了一个意外的关键字参数“domain_url”

问题描述

我开始使用 Django 多租户模式:https ://django-tenant-schemas.readthedocs.io/en/latest/use.html 我按照文档进行操作,但出现错误我无法创建新租户:这是我的代码:

from customer.models import Client
# im importing also other classes here

class TeamView(viewsets.GenericViewSet):

queryset = Team.objects.all()
serializer_class = TeamSerializer

def list(self, request):
    objectSerializer = TeamSerializer(Team.objects.all(), many=True)
    return Response(objectSerializer.data)

def create(self, request):
    formSerializer = self.serializer_class(data = request.data)
    if formSerializer.is_valid():
        ##
        tenant = Client( 
            schema_name='tenant1',
            name='Fonzy Tenant',
            paid_until='2014-12-05',
            on_trial=True)
        tenant.save()
        ##

这是文档中描述的客户端

from django.db import models
from django_tenants.models import TenantMixin, DomainMixin

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)

    # default true, schema will be automatically created and synced when it is saved
    auto_create_schema = True

class Domain(DomainMixin):
    pass

错误信息 ;

Client() got an unexpected keyword argument 'domain_url'

设置:这是我的共享和公共应用程序

SHARED_APPS = [
    'django_tenants',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    # My applications 
    'users',
    #3rd Part application
    'rest_framework',
    'rest_framework.authtoken',

    'allauth',
    'allauth.account',
    'allauth.socialaccount',

    'rest_auth',
    'rest_auth.registration',

    'webpack_loader',

    'corsheaders',
    'customer',
    # Datacenter
    '_datacenter.contact',
]

TENANT_APPS = [
    'django_tenants',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    # My Applications must be inside the folder Apps and must be plural .
    # While the dispather application must be inside datacenter folder
    'apps.contacts',
    'apps.lists',
    'apps.tasks',
    'apps.accounts',
    'apps.documents',
    'apps.teams',
]

INSTALLED_APPS = list(set(SHARED_APPS + TENANT_APPS))

标签: pythondjango

解决方案


我找到了解决方案:

**from django_tenants.utils import schema_context**


        **with schema_context("public"):**
            tenant = Client( 
                schema_name='tenant1',
                name='Fonzy Tenant',
                paid_until='2014-12-05',
                on_trial=True)
            tenant.save()

推荐阅读