2013-10-03 29 views
1

所以我在Django中有一個代表關聯的模型。用戶會收到他們獲得的每個推薦人的佣金。推薦人收到多少取決於他們的用戶級別。用戶級別取決於他們擁有多少推薦人。 5人以下轉介=基本,10人以下轉介=中介,15人以下轉介=高級。代表成員級別Django模型

我該如何編碼模型,以便用戶級別由聯盟會員推薦的數量自動確定?可以說

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) 

回答

0

你不能。

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在第一部分,這讓我相信有關它們的問題已經相當普遍。

+0

非常感謝。我想要保證誠實。我正在考慮使用模型方法,但我希望有更有經驗的人給我繼續前進。 – Iohannes