Настройка двух разных типов пользователей в Django 1.5 / 1.6
Обратите внимание - это обновленная версиямой оригинальный вопрос на эту тему, но заслуживает того, чтобы его снова спросили об изменениях в том, как Django взаимодействует с пользователями и аутентификацией.
я работаю над сайтом с двумя очень разными пользователями - давайтезовут ихCustomers
а такжеStore Owners
, Оба регистрируются на сайте, но имеют очень разный функционал.Customers
просто иметь единый профиль и можете делать покупки среди магазинов, которые им нравятся.Store Owners
иметь одну учетную запись, но может иметь доступ к нескольким магазинам, и каждый магазин может иметь несколько.Store Owners
Точные детали моделей неЭто не имеет значения, но два типа пользователей потребуют очень разные поля. Модели в идеале должны выглядеть примерно так:
Customer
email (username)
password
name
address
time_zone
preferred_shipping
favorite_stores (many-to-many field)
...
Store Owner
email (username)
password
name
balance
stores_owned (many-to-many field on Stores)
stores_managed (many-to-many field on Stores)
...
Первоначально, когда у Django была плохая пользовательская поддержка, у меня былUserProfile
класс с некоторыми дополнительными полями сOneToOne
наUser
, а затем дополнительныеCustomer
а такжеStoreOwner
классы, которые былиOneToOne
наUserProfile
, Это неработает очень хорошо.
Учитывая изменения в Django 1.5 / 1.6, я 'Я пытаюсь придумать лучший способ структурировать это. Прямо сейчас у меня есть следующее:
class CustomerUser(AbstractBaseUser):
...
class StoreOwnerUser(AbstractBaseUser):
...
Но так как было бы два типа пользователей, я могуустановитьAUTH_USER_MODEL
только одному из них.
Каков наилучший способ структурировать это так, чтобы у меня было два разных типа пользователей с разными полями, не вызывая у меня никаких проблем в аутентификации пользователя, создании пользователя или администратора?
Кроме того, как я смогу узнать из одного входа в систему, является ли этот пользовательCustomerUser
или?StoreOwnerUser