Представление уровней членства Django Models
Итак, у меня есть модель в 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)
1 ответ
Ты не можешь
Модель Django (или база данных, лежащая в ее основе) - это статические данные. Для принятия решений во время выполнения методы Model предназначены для:
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 в остальной части фреймворка. Не ясно, что в вашей партнерской модели есть количество рефералов, поэтому я использовал some_field
на своем месте. В зависимости от того, насколько управляемым данными вы хотите, чтобы этот поиск был, он может гарантировать свою собственную модель.
Учебник по django охватывает методы Model в своем первом разделе, что заставляет меня поверить, что вопросы о них были довольно распространенными.