Я предлагаю SaaS, в основном в виде приборной панели django и настраиваемой панели администратора. Используя арендаторов, у меня есть одна схема для каждого клиента, совместно использующего базу данных. У меня проблема в том, что клиент должен иметь возможность создавать объекты через страницу администратора, а объекты должны создавать URL-адрес с информацией о арендаторе. Например, URL-адрес клиента Y будет Y.xzxzxz.com, а URL-адрес клиента X будет X.xzxzxz.com. Будет несколько типов URL-адресов с одинаковым префиксом. В настоящее время клиенты должны вручную вводить префикс клиента. Может ли класс 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, у большинства ТАК есть работа на полную ставку помимо их OSS и других видов деятельности. Никто не собирается лазить по вашему репо, отлаживая его за вас. Я предлагаю вам прочитать следующее: stackoverflow.com/help/how-to-ask
- person thclark; 07.11.2019
... а также поместите минимальный воспроизводимый пример в вопрос stackoverflow.com/help/minimal-reproducible-example
- person thclark; 07.11.2019
Я не хотел, чтобы вы думали, что я хотел, чтобы кто-то прочитал их, просто в базе данных есть небольшой раздел, чтобы показать, что я настроил его по-другому. Но ничего из этого даже не нужно. Я просто задал вопрос, который не обязательно связан с какой-либо отладкой или фактическим кодом. Я не ожидал большего, чем нет, потому что х или да, я сделал y
- person JohnDoe; 07.11.2019
Я импортировал Connection из django.db, а затем использовал connection.get_tenant().name и получил то, что искал.
person
JohnDoe
schedule
21.11.2019