【发布时间】:2012-11-21 21:49:21
【问题描述】:
使用 Django 1.5 的新 configurable user model 功能实现多种用户类型的推荐方法是什么?
我想要两种用户类型:私人用户和交易用户,每个用户都有自己的一组必填字段。
我可以想到两种方法来实现它:
1) 多表继承
class BaseUser(AbstractBaseUser):
email = models.EmailField(max_length=254, unique=True)
# ...
class PrivateUser(BaseUser):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
# ...
class TradeUser(BaseUser):
company_name = models.CharField(max_length=100)
# ...
将多表继承与可配置用户模型结合使用有什么问题吗?
2) 使用具有“类型”属性的单个模型
class User(AbstractBaseUser):
email = models.EmailField(max_length=254, unique=True)
user_type = models.CharField(max_length=30, choices={
'P': 'Private',
'T': 'Trade',
})
first_name = models.CharField(max_length=30, blank=True)
last_name = models.CharField(max_length=30, blank=True)
company_name = models.CharField(max_length=100, blank=True)
# ...
此方法需要一些依赖于user_type 的条件验证。
以下哪种方法最适合我的用例?或者也许有更好的方法来实现这一点?
另外,如果是第 1 种情况,我该如何过滤我的用户?
谢谢。
【问题讨论】:
标签: django django-models django-1.5