Как изменить пользователя на основе его личной ценности с помощью python

В моих моделях есть таблица Referralcode

ReferralActiveUser

class ReferralActiveUser(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)

Я хочу просмотреть эту таблицу и изменить статус пользователя на основе его pv (personal value), но я запутался или не знаю, как это сделать.

Что я хочу, так это предположить, что это пользователи в моей таблице

[
    {
        "id": 1,
        "user": 2,
        "user_active": "0",
        "referral_by": 1
    },
    {
        "id": 2,
        "user": 3,
        "user_active": "0",
        "referral_by": 2
        
    },
    {
        "id": 3,
        "user": 4,
        "user_active": "0",
        "referral_by": 2
        
    },
    {
        "id": 4,
        "user": 5,
        "user_active": "0",
        "referral_by": 2
        
    }
]

здесь "user":1 - первый пользователь, который запустил эту программу, а все остальные пользователи являются дочерними от "user":1 это как древовидная структура и я хочу перебирать пользователей и проверять pv каждого пользователя и изменять его статус следующим образом

referral_users = ReferralActiveUser.objects.all()
min_value=20
for user in referral_users:
    if user.pv >= min_value:
        user.status = True
        user.save()
    else:
        # Find users referred by this user
        inactive_users = referral_users.filter(referral_by=user.user)
        for j in inactive_users:
            j.referral_by = # want to add parent of this user 
            j.save()
        user.status = False
        user.save()

INFO

Для получения более подробной информации посмотрите это изображение. На изображении красный и зеленый цвета представляют статус как True и False соответственно. Если статус пользователя в дереве False, то я должен изменить его направление на активное, пожалуйста, помогите мне. Надеюсь, вы все понимаете мою проблему, пожалуйста, дайте мне знать для любого вида информации.

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