Django многопользовательские saas - PullRequest
2 голосов
/ 05 января 2012

Я создаю небольшой saas для учебных целей ... Я знаю, что лучший способ - создать отдельную схему для каждого пользователя ... Но мой saas - это небольшое приложение, и мне действительно не нужно отдельные схемы плюс это усложнит вещи (последующие изменения в схеме) ... Поэтому я собираюсь использовать одну и ту же схему для всех пользователей и просто добавить идентификатор каждого пользователя к записи, а затем отображать только записи пользователя при входе в систему.

Есть ли способ, которым я могу "добавить" идентификатор пользователя при входе через промежуточное ПО? Или мне нужно настроить все запросы (фильтр по идентификатору пользователя)? Я уже храню идентификатор пользователя в его записях ... поэтому он нужен только для выбора.

Спасибо!

1 Ответ

2 голосов
/ 05 января 2012

Я не знаю ни одного способа автоматической фильтрации наборов запросов на основе request.user.Это связано с тем, что ORM не связан с django.contrib.auth.

Я пробовал два варианта SaaS:

  1. 1 для всех сайтов и ручная фильтрация по всем наборам запросов.Конечно, это сделало django.contrib.admin невозможным из коробки.Может быть возможно включить django.contrib.admin с очень жесткой настройкой django-полномочий или, может быть, даже других пакетов разрешений django для каждого объекта ( версия из кэша Google, потому чтоdjangopackages.com не работает ATM ).

  2. 1 база данных на сайт , это просто, обеспечивает чистоту кода и включает django.contrib.adminиз коробки, что может быть очень здорово, если вы установите django admin theme .Также я включил django.contrib.admindoc , а также django-dbtemplates .

(по-видимому, в вашем случае 1 сайт = 1 пользователь, но концепция та же самая)

Я предпочитаю вторую реализацию, потому что очевидно, что это намного меньше работы по разработке, которая компенсируется небольшим системным администрированием.

...