Mandantenfähig heißt, dass ich komplett getrennte Kunden (die Mandanten) mit einer Installation in einer Datenbank betreiben kann. Ich habe dazu ein Modell `Tenant`, das für alle anderen Modelle definiert, zu welchem Mandanten sie gehören und so alle Objekte mit einem Manager gegeneinander abschottet.
Code: Alles auswählen
class Tenant(models.Model):
name = models.CharField(max_length=50)
class TenantManager(models.Manager):
def get_queryset(self):
return super(TenantManager, self).get_queryset().filter(tenant=current.tenant)
class TenantModel(models.Model):
tenant = models.ForeignKey(Tenant, editable=False, related_name='%(class)s_related')
objects = TenantManager()
class Meta:
abstract = True
def save(self, **options):
if not self.id and not self.tenant_id:
self.tenant = current.tenant
return super(TenantModel, self).save(**options)
Einzig dass Django darauf besteht, dass der username "unique" sein muss (verständlicherweise, ist es doch ein Key), bricht mir das Genick. Leider kennt Django keine zusammengesetzten Primärschlüssel. Was tun? Gibt es einen anderen Ansatz?
Hat sonst schon jemand sich mit dem Problem beschäftigt?
Stefan