2013-02-19 41 views
2

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

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

我相信该计划将存储在UserenaBaseProfile的子类中,但不知道...也许计划选择不应该是该配置文件的一部分。

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

回答

2

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

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

将用户的计划细节与核心模型分开较为容易。

0

我会让计划级别变成权限。

如果他们需要被分配到一个特定的对象,你可以使用Django的监护人将其添加到类为该对象:

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"), 
     ) 

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