我在動態生成我的Django應用程序的用戶時遇到了問題,我在這裏爲多租戶使用了django-tenant-schemas。在Django中保存動態模型對象的問題(使用djano-tenant-schema)
以下是我的看法片段:
def RegisterView(request):
if request.method == 'POST':
response_data = {}
domain = request.POST.get('domain')
schema = request.POST.get('schema')
name = request.POST.get('name')
description = request.POST.get('description')
client=Client()
Client.domain_url=domain
Client.schema_name=schema
Client.name=name
Client.description=description
Client.save()
現在,我使用
from customers.models import Client
對於這種多租戶包導入模型客戶下一個單獨的應用程序的客戶,全系車型繼承基TenantMixin。
以下是我的模型:
class Client(TenantMixin):
name = models.CharField(max_length=100)
description = models.TextField(max_length=200)
created_on = models.DateField(auto_now_add=True)
這是TenanMixin代碼段爲您準備好幫助的命令:
class TenantMixin(models.Model):
"""
All tenant models must inherit this class.
"""
auto_drop_schema = False
"""
USE THIS WITH CAUTION!
Set this flag to true on a parent class if you want the schema to be
automatically deleted if the tenant row gets deleted.
"""
auto_create_schema = True
"""
Set this flag to false on a parent class if you don't want the schema
to be automatically created upon save.
"""
domain_url = models.CharField(max_length=128, unique=True)
schema_name = models.CharField(max_length=63, unique=True,
validators=[_check_schema_name])
class Meta:
abstract = True
def save(self, verbosity=1, *args, **kwargs):
is_new = self.pk is None
if is_new and connection.schema_name != get_public_schema_name():
raise Exception("Can't create tenant outside the public schema. "
"Current schema is %s." % connection.schema_name)
elif not is_new and connection.schema_name not in (self.schema_name, get_public_schema_name()):
raise Exception("Can't update tenant outside it's own schema or "
"the public schema. Current schema is %s."
% connection.schema_name)
super(TenantMixin, self).save(*args, **kwargs)
if is_new and self.auto_create_schema:
try:
self.create_schema(check_if_exists=True, verbosity=verbosity)
except:
# We failed creating the tenant, delete what we created and
# re-raise the exception
self.delete(force_drop=True)
raise
else:
post_schema_sync.send(sender=TenantMixin, tenant=self)
現在,錯誤,我得到的是:
save() missing 1 required positional argument: 'self'
而追溯是:
Traceback:
File "/home/sayantan/Desktop/djangowork/my_env/lib/python3.4/site- packages/django/core/handlers/base.py" in get_response
149. response = self.process_exception_by_middleware(e, request)
File "/home/sayantan/Desktop/djangowork/my_env/lib/python3.4/site- packages/django/core/handlers/base.py" in get_response
147. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/sayantan/Desktop/djangowork/invoice/invoice/views.py" in RegisterView
55. Client.save()
Exception Type: TypeError at /register/
Exception Value: save() missing 1 required positional argument: 'self'
如果可能,請求您幫助我。
我能取悅請求的答覆,或許我們可以討論和解決,bcoz其kindaa急!!! – Sayantan