не может отправлять сигналы указанному c пользователю - PullRequest
0 голосов
/ 04 марта 2020

Я отправляю уведомления пользователю через django уведомлений. И у меня есть пользовательское регулярное выражение, работающее с html, поэтому любой, кто прокомментирует с @ username , будет публиковать, а html можно связать, поэтому нажмите на @username, чтобы он переместился на страницу профиля имени пользователя. Теперь я использую django сигналов, чтобы соответствовать имени пользователя и распечатать имя пользователя. но когда я использую уведомление, чтобы отправить уведомление. это не работает. models.py:

class Comment(models.Model):
post = models.ForeignKey(post, on_delete=models.CASCADE, related_name='comments')
user = models.ForeignKey(User, on_delete=models.CASCADE)
reply = models.ForeignKey('Comment', null=True, related_name='replies', on_delete=models.CASCADE)
content = models.TextField()
image = models.ImageField(upload_to='comments-pics', null=True, blank=True)
voice_record = models.FileField(upload_to='voice-comments', null=True, blank=True)
timestamp = models.DateTimeField(auto_now_add=True)

def __str__ (self):
    return '{}.{}'.format(self.post.title, str(self.user.username))


def save(self, *args, **kwargs):
    super(Comment, self).save(*args, **kwargs)


def Comment_save_receiver(sender, instance, created, *args,**kwargs):
    if created and not instance.parent:
    user_regex = r'@(?P<username>[\w.@+-]+)'
    m = re.search(user_regex, instance.content)
    if m:
        try:
            recipient = User.objects.get(username=m.group('username'))
        except (User.DoesNotExist, User.MultipleObjectsReturned):
            pass
        else:
            notify.send(instance.user, recipient=recipient, actor=instance.user, verb='mention you in a post', target=instance, nf_type='tagged_by_one_user')

post_save.connect(Comment_save_receiver, sender=post)

1 Ответ

0 голосов
/ 05 марта 2020

проблема была решена. я сделал неправильно с сигнальной частью. это будет:

def comment_save_receiver(sender, instance, created, *args,**kwargs):
if created:
user_regex = r'@(?P<username>[\w.@+-]+)'
m = re.search(user_regex, instance.content)
if m:
    try:
        recipient = User.objects.get(username=m.group('username'))
    except (User.DoesNotExist, User.MultipleObjectsReturned):
        pass
    else:
        notify.send(instance.user, recipient=recipient, actor=instance.user, verb='mention you in a post', target=instance.post, nf_type='tagged_by_one_user')

post_save.connect(comment_save_receiver, sender=Comment)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...