Django: как проверить, зарегистрированы ли пользователи, зарегистрированные под моим именем, на новых пользователей, зарегистрированных под ними в Django

Я пишу логику реферальной системы на django. Сейчас реферальная система работает нормально, но я хочу реализовать следующее. Когда я направляю пользователя "user 2" и "user 3", сохраняется, что я направил двух пользователей, теперь как мне проверить, если "user 2" или "user 3", которые были направлены мной: получили ли они нового пользователя ("user 2" или "user 3").

Вот код, который я написал для регистрации пользователей в качестве рефералов views.py

def registerRef(request, *args, **kwargs):
    profile_id = request.session.get('ref_profile')
    print('profile_id', profile_id)

    code = str(kwargs.get('ref_code'))
    try:
        profile = Profile.objects.get(code=code)
        request.session['ref_profile'] = profile.id
        print('Referer Profile:', profile.id)
    except:
        pass
    print("Session Expiry Date:" + str(request.session.get_expiry_age()))

    form = UserRegisterForm(request.POST or None)
    if form.is_valid():
        if profile_id is not None:
            recommended_by_profile = Profile.objects.get(id=profile_id)
            ref_earn = InvestmentPackageID.objects.get()

            instance = form.save()
            registered_user = User.objects.get(id=instance.id)
            registered_profile = Profile.objects.get(user=registered_user)
            registered_profile.recommended_by = recommended_by_profile.user
            registered_profile.save()

        else:
            instance = form.save()
            registered_user = User.objects.get(id=instance.id)
            profile = Profile.objects.get(user=registered_user)
            profile.save()

        username = form.cleaned_data.get('email')
        password = form.cleaned_data.get('password1')
        user = authenticate(username=username, password=password)
        login(request, user)
        return redirect('core:index')

    context = {'form':form}
    return render(request, 'userauths/sign-up.html', context)


в модели профиля у меня есть поле следующего вида models.py

class Profile(models.Model):
    ...
    code = models.CharField(max_lenght=100, ...)
    recommended_by = models.ForeignKey(User, ...)

Каким способом лучше всего добиться такой возможности?

Связана ли ваша модель профиля с пользователем с полем OneToOne (имя 'user')? Если да:

Если вам нужно только два уровня вложенных recommended_by, я бы выбрал:

my_recomended = Profile.object.filter(recommeded_by=request.user).value_list('user__id', flat=True)
second_level_recommended=Profile.object.filter(recommeded_by__in=my_recomended)
Вернуться на верх