Настройка двух разных типов пользователей в 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

Ответы на вопрос(3)

Ваш ответ на вопрос