Предлагам SaaS, най-вече като табло за управление на django и персонализиран административен панел. Използвайки наематели, имам една схема на клиент, споделящ база данни. Проблемът, който имам, е, че клиентът трябва да може да създава обекти през страницата на администратора и обектите трябва да създават url с информация за клиента. Например URL адресът на клиент Y ще бъде Y.xzxzxz.com, а URL адресът на клиент X ще бъде X.xzxzxz.com. Ще има множество типове URL адреси с един и същ префикс. В момента клиентите трябва ръчно да въвеждат клиентския префикс. Възможно ли е класът Models да знае коя схема го използва?
Възможно ли е Models да знае кой наемател го използва?
Отговори (2)
Наистина изобщо не е ясно какво питаш. Но предполагам, че искате да знаете в коя от множеството бази данни съществува даден модел.
Вашият settings.py
вероятно ще има DATABASE
ключове като:
DATABASES = {
'default': 'postgres://user:pass@localhost:5432/default',
'tenant_1': 'postgres://user:pass@localhost:5432/tenant_1',
}
Така че след като сте запазили модел, можете да установите в коя база данни съществува, като направите:
instance = YourModel.objects.create()
print(instance._state.db)
# Prints "default" or "tenant_1" depending on which database its in
person
thclark
schedule
06.11.2019
Това е шаблонът, който следвах за създаване на системата: github.com/tomturner/django-tenants така че настроих наемателя през терминала. URL адресът основно е self.slug = (self.customerPrefix + .....local.... + ....) и получавам customerPrefix, защото точно сега го въвеждам ръчно. Мислех да прочета префикса от URL адреса на администратора, ако не разбера друг начин.
- person JohnDoe; 07.11.2019
@JohnDoe, повечето хора от SO имат работа на пълен работен ден в допълнение към OSS и други дейности. Никой няма да пълзи из вашето репо, за да го отстранява вместо вас. Предлагам ви да прочетете следното: stackoverflow.com/help/how-to-ask
- person thclark; 07.11.2019
...и също така поставете минимално възпроизводим пример във въпроса stackoverflow.com/help/minimal-reproducible-example
- person thclark; 07.11.2019
Не исках да мислите, че искам някой да ги прочете, просто има кратък раздел в базата данни, за да покаже, че съм я настроил по различен начин. Но нищо от това дори не е необходимо, просто зададох въпрос, който не е непременно свързан с отстраняване на грешки или действителен код. Не очаквах повече от не, защото x или да, направих y
- person JohnDoe; 07.11.2019
Импортирах Connection от django.db и след това използвах connection.get_tenant().name и получих това, което търсех.
person
JohnDoe
schedule
21.11.2019