2014-11-21 5 views
0

Недавно я должен разработать CRM-систему с модулем электронной коммерции. Поскольку клиенты регистрируются только на веб-сайте электронной торговли (вход в систему по электронной почте), сотрудники регистрируются только в CRM,Один проект Django, несколько Settings.py

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

Я собираюсь запустить две разные настройки приложения в двух подпунктах или двух доменах, может ли это вызвать какую-либо проблему? (Как проблема параллелизма?)

+1

Почему вы хотите их разделить? разве не проще отделить логику на уровне модели, а не испортить настройки? – doniyor

+0

@doniyor Можно ли добиться этого, имея две пользовательские модели, одну для сайта администратора, одну для коммерческого сайта? Если да, то как настроить 'AUTH_USER_MODEL'? В моей ситуации клиент и персонал могут иметь одинаковое имя пользователя (или другой токен входа), возможно ли это? –

+0

да, возможно. я попытаюсь объяснить в ответ в секунду – doniyor

ответ

1

вам не нужно устанавливать две AUTH_USER_MODEL = 'myapp.MyUser' или две настройки для этой цели, которые, вероятно, будут работать, но это не тот уровень, к которому эта логика относится. (Настройки уже на уровне развертывания, например, запуск нескольких сайтов на одной и той же кодовой базе и той же Databse и т.д. и т.п. ...)

, что я рекомендовал бы что-то простое:

# settings.py 
AUTH_USER_MODEL = 'yourapp.CustomUser' 

# yourapp's models.lpy 
from django.contrib.auth.models import User 
class CustomUser(models.Model): 
    user = models.OneToOneField(User, related_name="customuser") 
    crm_staff = models.Boolean(default=False) 
    # ... 

и в зависимости от crm_staff, пользователь является либо пользователем crm, либо просто внешним пользователем. Я установить значение по умолчанию crm_staff к False, так что вы должны дать ему явно каждый новый пользователь приходит, но только если пользователь является сотрудником CRM, то вам необходимо установить поле для True

держать его как насколько это возможно, вы сами скажете об этом позже.

Смежные вопросы