请注意 - 这是更新版本 我原来的问题 关于这个问题,但值得再次询问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
或者a StoreOwnerUser
?