Django post_save () сигнал срабатывает при удалении экземпляра - PullRequest
0 голосов
/ 14 сентября 2018

В настоящее время я работаю в социальной сети с Django.

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

Я создал сигнал post_save следующим образом:

def post_tagged(*args, **kwargs):
  instance = kwargs['instance']
  message = f'{instance.user.slug} mentioned you in a post.'

  #Find in the content of the post if there are any "@username", if yes create a Notification object
  for user in MyUser.objects.all():
    if instance.content.find(f'@{user.slug}') != -1 and instance.user != user:
      Notification.objects.create(user = user, message = message)

models.signals.post_save.connect(post_tagged, sender = Post)

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

if 'deletePost' in request.POST:
  postId = request.POST.get('deletePost', None)
  post = Post.objects.get(pk = postId)
  if request.user == post.user:
    post.delete()
    message = 'Success'
  else:
    message = 'Fail'
  jsonData = {"message": message,}
  return HttpResponse(json.dumps(jsonData))

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

У кого-нибудь есть такая же проблема? Я ценю любую помощь. Спасибо

...