请注意 - 这是关于此主题的原始问题的更新版本,但值得再次询问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)
...
Run Code Online (Sandbox Code Playgroud)
原来,当Django的有穷自定义用户的支持,我有一个UserProfile用一个有些额外的字段级OneToOne上User,再附加Customer和StoreOwner那名课OneToOne上UserProfile.这不是很好.
鉴于Django 1.5/1.6的变化,我试图想出最好的结构方法.现在,我有以下内容:
class CustomerUser(AbstractBaseUser):
...
class StoreOwnerUser(AbstractBaseUser):
...
Run Code Online (Sandbox Code Playgroud)
但是因为有两种类型的用户,我不能AUTH_USER_MODEL只设置其中一种.
构造这个的最佳方法是什么,以便我可以有两个不同类型的用户使用不同的字段,而不会在用户身份验证,用户创建或管理员方面造成任何问题?
另外,我怎样才能从登录单独告诉该用户是a CustomerUser还是 …