我需要编写一个可以让各种类型的用户登录的系统,每个用户都有自己不同的数据集存储在模型中。我的第一直觉是使用新的抽象基类并创建自己的用户类型,所以我有类似的东西:
class BaseUser(AbstractBaseUser):
email = models.EmailField(max_length=254, unique=True, db_index=True)
USERNAME_FIELD = 'email'
# ...
class StaffUser(BaseUser)
name = ...
# ...
class ClientUser(BaseUser)
company_name = ...
address = ...
# ...
还有更多的用户类型。但是他们都需要通过相同的界面登录,并被引导到正确的位置,并且只能做他们的用户类应该能够做的事情,并且只能看到他们应该做的事情。
但似乎我不能只使用常规身份验证方法,因为它无法搜索多个模型(据我所知)。我遇到了这个片段(http://djangosnippets.org/snippets/2546/),它可能有用,但我不确定这是否真的是最好的方法,或者我是否应该处理很多空字段,只有一个用户类并使用权限系统。这样做最干净的方法是什么?