2

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

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

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

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

4

2 回答 2

2

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

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

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

于 2013-02-19T15:51:42.363 回答
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"),
        )

那么当你需要查看一个账户的套餐级别时,你只需使用典型的查看权限的方式,除了寻找“免费”、“专业”等。

于 2013-10-09T15:58:37.463 回答