Метод 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