2013-10-03 2 views
1

그래서 계열사를 대표하는 Django의 모델이 있습니다. 사용자는 그들이받는 각 추천에 대한 커미션을받습니다. 리퍼러가받는 금액은 사용자 수준에 따라 다릅니다. 사용자 수준은 추천의 수에 따라 다릅니다. 5 명 미만 추천 = 기본, 10 명 미만 추천 = 중급, 15 명 미만 추천 = 고급.회원 등급 표시 Django Models

사용자 레벨이 제휴사의 추천 금액에 따라 자동으로 결정되도록 모델을 코딩하는 방법은 무엇입니까? 말하자면

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