Как я могу изменить направление неактивного пользователя, пока я не нашел активное направление текущего пользователя в django

Как я могу изменить направление неактивного пользователя, пока я не нашел активное направление текущего пользователя Вот мои модели

class ReferralCode(models.Model):
    user = models.ForeignKey(
        User, on_delete=models.SET_NULL, null=True, blank=True)
    user_active = models.BooleanField(default=False)
    referral = models.ForeignKey(
        User, related_name='comp_active_user', on_delete=models.SET_NULL, null=True, blank=True)


class PointValue(models.Model):
    user_id = models.ForeignKey(
        User, related_name='realtime_user', on_delete=models.CASCADE)
    rt_ppv = models.DecimalField(
        null=True, max_digits=20, decimal_places=2, default=0.00)

это мое мнение

def check_active(request):
    min_ppv = 20
    for user in ReferralCode.objects.all():
        try:
            user_point = PointValue.objects.get(
                user_id=user
            )
        except:
            pass
        if user_point.rt_ppv >= min_ppv:
            user.user_active = True
            user.save()
        else:
            # getting all users referred by this user
            users_referred = ReferralCode.objects.filter(
                referral=user
            )
            # changing referral of all users to parent user of current user
            for user_referred in users_referred:
                user_referred.referral = user.referral
                user_referred.save()
            user.user_active = False
            user.save()

Я хочу проверить каждого пользователя в ReferralCode и проверить его значение rt_ppv из таблицы PointValue если оно больше чем min_ppv то я меняю его статус на True, а если нет, то статус пользователя будет False и меняю всех пользователей, которых он отнес к родителям текущего пользователя (проверяю в блоке else)

Проблема : Он меняет реферала, но новый реферал всех пользователей rt_ppv не больше min_ppv так как я могу проверить это рекурсивным способом, чтобы он выдал мне активного

посмотрите это изображение для получения дополнительной информации ImageLink

Вернуться на верх