1. pyOut

    14.03.2010

    0 ↑
    0 ↓
    Приветствую,

    Помогите правильно создать модель следующего назначения. Нужно для каждого юзера создать реферальную систему. Поясню, каждый юзер может иметь только 1 реферера и множество рефералов.

    Написал следующую модель:
    class Profile(models.Model):
    user = AutoOneToOneField(User, related_name='profile', verbose_name=_('User'))
    referer = models.OneToOneField(Profile) # Только 1 реферер, правильно ли это?
    referrals = models.ForeignKey(Profile, related_name='referrals ', verbose_name=_('Referrals')) # Тут, наверное, должно быть что-то вроде OneToMany?
  2. Пожалуйста не надо писать вопросы как комментарии в коде, которые к тому же не видно.

    По сути у вас обе связи не верные. И вообще нужна одна:

    class Profile(models.Model):
        user = AutoOneToOneField(User, related_name='profile', verbose_name=_('User'))
        referrer = models.ForeignKey('self', related_name='referrals')
    
  3. pyOut

    14.03.2010

    0 ↑
    0 ↓
    Почему именно так? Какой запрос мне необходимо будет сделать в таком случае чтобы достать отдельно реферера и рефералов?
  4. Вам нужна связь "один ко многим" замкнутая на себя (на модель Profile)

    profile = Profile.objects.get(...)
    
    profile.referrer # реферер - один
    profile.referrals.all() # рефералы - много
    

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.