【问题标题】:Django Userena ExtendingDjango Userena 扩展
【发布时间】:2013-02-04 08:53:47
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: django django-models django-users


    【解决方案1】:

    我会将计划级别设置为权限。

    如果需要将它们分配给特定对象,您可以使用 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"),
            )
    

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-12
        • 1970-01-01
        • 1970-01-01
        • 2012-12-15
        • 2018-03-01
        • 2017-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多