python - 代表成员(member)级别的 Django 模型

标签 python django postgresql model affiliate

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

如何对模型进行编码,以便用户级别由联属成员(member)的推荐量自动确定?让我们说

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)

最佳答案

你不能。

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 

模型方法的优点在于,它们的行为类似于框架其余部分中的模型字段。目前尚不清楚您的联盟模型是否有可用的推荐计数,因此我在其位置使用了 some_field。根据您希望此查找的数据驱动方式,它可能需要自己的模型。

django tutorial covers Model methods在第一部分,这让我相信关于它们的问题非常普遍。

关于python - 代表成员(member)级别的 Django 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19149756/

相关文章:

php - python 中 PHP GD 库的替代方案

python - 如何解决溢出错误: math range error

Python数据框上的数据计算

python - 你如何使 django 十进制字段小部件(numberinput)以不同方式递增

node.js - 未使用 TypeORM 找到连接 "default"

python - 获取内部 HTML - Selenium、BeautifulSoup、Python

django - 在 Django 中返回 HttpResponse() 时,开发 wsgi 服务器陷入困境(debug=True)

python - Django:使用自定义中间表时如何限制_choices_to

ruby-on-rails - 在一个月内创建的 Rails 范围

sql - 来自直方图数据的百分位数