Ich habe Probleme bei der dynamischen Generierung von Benutzern für meine Django-App, wo ich die django-tenant-Schemas für die Mandantenfähigkeit verwende.Problem beim Speichern eines dynamischen Modellobjekts in Django (mit Djano-Tenant-Schema)
Es folgt meine Ansichten Snippet:
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()
Nun ich das Modell -Client importieren unter einer separaten App Kunden
from customers.models import Client
Für diesen Multi Tenant-Paket mit, alle Modelle erben die Basis MieterMixin.
Es folgt mein Modell:
class Client(TenantMixin):
name = models.CharField(max_length=100)
description = models.TextField(max_length=200)
created_on = models.DateField(auto_now_add=True)
Und das ist der TenanMixin Code-Schnipsel mit den Befehlen für die bereite Hilfe:
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)
Nun Fehler Ich erhalte ist:
save() missing 1 required positional argument: 'self'
Und die Rückverfolgung ist:
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'
Fordern Sie mich bitte freundlich zu helfen, wenn möglich.
Könnte ich bitte fragen Sie eine Antwort (wie Sie here und here sehen kann), vielleicht können wir diskutieren und lösen, bcoz seine kindaa dringend !!! – Sayantan