【问题标题】:Representing Membership Levels Django Models表示成员级别的 Django 模型
【发布时间】:2013-10-09 14:16:03
【问题描述】:

所以我在 Django 中有一个代表附属机构的模型。用户每次获得推荐都会获得佣金。推荐人收到多少取决于他们的用户级别。用户级别取决于他们有多少推荐人。 5 次以下推荐 = 基本,10 次以下推荐 = 中级,15 次以下推荐 = 高级。

如何对模型进行编码,以便用户级别由会员的推荐数量自动确定?让我们说

class Affiliate(models.Model):
    user= models.OneToOneField(User)
    affiliate_id = models.PositiveIntegerField(primary_key=True)
    referral_id = models.PositiveIntegerField(blank=False, null=False)
    user_level = (
('B', 'Basic'),
('I', 'Intermediate'),
('A', 'Advanced'),
 default='B')
    referred_by = models.ForeignKey(referral_id, default=1)

【问题讨论】:

    标签: python django postgresql model affiliate


    【解决方案1】:

    你不能。

    django 模型(或其底层数据库)是静态数据。做出运行时决策是模型方法的用途:

    class Affiliate(model.Model):
        affiliate_id = models.PositiveIntegerField(primary_key=True)
        …
    
        def user_level(self):
            levels = [(5, 'B'), …]
            for referrals, category in levels:
                 if self.some_field < referrals:
                     return category 
    

    Model 方法的好处在于它们的行为类似于框架其余部分中的 Model 字段。不清楚您的 Affiliate 模型是否有可用的推荐计数,因此我使用 some_field 代替它。根据您希望此查找的数据驱动方式,它可能需要自己的模型。

    第一部分中的django tutorial covers Model methods,这让我相信关于它们的问题已经很普遍了。

    【讨论】:

    • 非常感谢。老实说,我想要一些安慰。我正在考虑使用模型方法,但我希望有经验更丰富的人来帮助我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2015-11-03
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    相关资源
    最近更新 更多