Django Userena扩展

时间:2013-02-19 15:47:00

标签: django django-models django-users

当用户注册我的网站时,我正在尝试实施“计划”(免费,专业,企业等)的概念。

我开始Python& Django。我已经安装django-userena并且正在工作。现在,我正在尝试扩展行为,以允许用户在注册网站时选择“计划”。

我认为该计划将存储在UserenaBaseProfile的子类中,但不确定......计划选择不应该是个人资料的一部分。

使用Django(或不使用Userena!)在Userena应用中实施“计划”概念的最佳方法是什么。

2 个答案:

答案 0 :(得分:2)

您可以创建一个包含所有计划详细信息的Plan模型。之后,使用以下字段创建UserPlan模型。

user = models.OneToOneField(UserenaBaseProfile)
plan = models.ForeignKey(Plan)
// other fields like validity and audit related fields

将用户的计划详细信息与核心模型分开会更容易。

答案 1 :(得分:0)

我会将计划级别变为权限。

如果需要将它们分配给特定对象,可以使用django-guardian将它们添加到该对象的类中:

class Whatever(ExtendedGuardedModel, BaseModel):

    name = models.CharField(max_length=200)

    class Meta(BaseModel.Meta):
        permissions = (
            ("free", "Free level of access"),
            ("pro", "Pro level of access"),
            ("enterprise", "Enterprise level of access"),
        )

然后,当您需要检查帐户的计划级别时,您只需使用检查权限的典型方式,除了查找“免费”,“专业”等。