Метод Post_save в django

Я столкнулся с проблемой, что если оба человека следят друг за другом, то это должно сделать их друзьями. Я планирую использовать для этого метод сохранения сообщений в Django signal. Но я не могу добиться прогресса в этом. Пожалуйста, помогите мне в этом. Спасибо заранее и посмотрите код ниже и извините за плохое кодирование.

Models.py:

class Follow(models.Model):
Follower=models.ForeignKey(User, models.SET_NULL,null=True,related_name='from_user_followers',blank=True)
Followe=models.ForeignKey(User,models.SET_NULL,null=True,related_name='to_user_followers',blank=True)
created=models.DateTimeField(default=now)

@receiver(post_save, sender=Follow)    
def create_friend(sender, instance, created, **kwargs):

if created:
    see_followe_is_following_back = Follow.objects.filter(Followe=instance.Follower, Follower=instance.Followe)
    see_follower_is_following_back = Follow.objects.filter(Follower=instance.Followe, Followe=instance.Follower)
    
    try:
        if str(instance.Follower) == str(see_follower_is_following_back) and str(instance.Followe) == str(see_followe_is_following_back):
            create_friends= Friends.objects.update_or_create(from_user=instance.Followe , to_user=instance.Follower)
            return create_friends
        else:
            pass
    except Exception as e:
        return str(e)

else:
    pass 


class Friends(models.Model):
from_user=models.ForeignKey(User, models.SET_NULL,null=True,related_name='from_user_friends',blank=True)
to_user=models.ForeignKey(User,models.SET_NULL,null=True,related_name='to_user_friends',blank=True)
created=models.DateTimeField(default=now)

Ваша логика должна быть такой, пожалуйста, попробуйте следующий код.

class Follow(models.Model):
    Follower=models.ForeignKey(User, models.SET_NULL,null=True,related_name='from_user_followers',blank=True)
    Followe=models.ForeignKey(User, models.SET_NULL,null=True,related_name='to_user_followers',blank=True)
    created=models.DateTimeField(default=now)

@receiver(post_save, sender=Follow)    
def create_friend(sender, instance, created, **kwargs):
    if created:
        see_follower_is_following_back = Follow.objects.filter(Followe=instance.Follower, Follower=instance.Followe).first()
        see_followe_is_following_back = Follow.objects.filter(Follower=instance.Follower, Followe=instance.Followe).first() 
        
        try:
            if str(instance.Follower) == str(see_follower_is_following_back.Followe) and str(instance.Followe) == str(see_followe_is_following_back.Followe):
                create_friends= Friends.objects.update_or_create(from_user=instance.Followe , to_user=instance.Follower)
                return create_friends
            else:
                pass
        except Exception as e:
            return str(e)
    else:
        pass 


class Friends(models.Model):
    from_user=models.ForeignKey(User, models.SET_NULL,null=True,related_name='from_user_friends',blank=True)
    to_user=models.ForeignKey(User,models.SET_NULL,null=True,related_name='to_user_friends',blank=True)
    created=models.DateTimeField(default=now)

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

@receiver(post_save, sender=Follow)    
def create_friend(sender, instance, created, **kwargs):
    if created:
        see_follower_is_following_back = Follow.objects.filter(Followe=instance.Follower, Follower=instance.Followe).first()
        
        if see_follower_is_following_back:
            create_friends= Friends.objects.update_or_create(from_user=instance.Followe , to_user=instance.Follower)
            return create_friends             

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