微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取所有用户并将其用于 Django 中的收件人

如何解决获取所有用户并将其用于 Django 中的收件人

我通过 Django 通知用户发送通知我有用户名正则表达式处理 HTML,所以任何人用@username 发帖,它都会发帖,HTML 是可链接的,所以点击 @username 它将把任何人带到用户名个人资料页面。现在我使用 Django 信号来匹配用户名并打印出用户名。当我使用两个或三个@usernames 时,通知只发送给一个@username,其他两个@username 不会收到通知

Models.py-

class post(models.Model):
parent = models.ForeignKey("self",on_delete=models.CASCADE,blank=True,null=True)
title = models.CharField(max_length=100)
image = models.ImageField(upload_to='post_pics',null=True,blank=True)
video = models.FileField(upload_to='post_videos',blank=True)
content = models.TextField()
likes = models.ManyToManyField(User,related_name='likes',blank=True)
date_posted = models.DateTimeField(default=timezone.Now)
author = models.ForeignKey(User,on_delete=models.CASCADE)

objects = postManager()

def __str__(self):
    return self.title

class Meta:
    ordering = ['-date_posted','title']

def get_absolute_url(self):
    return reverse ('blog-home')

def total_likes(self):
    return self.likes.count()


def post_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:
        username = m.group("username")

        notify.send(instance.author,recipient=m,actor=instance.author,verb='tagged you',nf_type='tagged_by_one_user')

post_save.connect(post_save_receiver,sender=post)

解决方法

您需要检查用于用户列表的变量“m”,我认为您在那里只获得了一个用户。 您可以通过在 *args 或 **kwargs 中发送所有用户 ID 来简单地做到这一点。然后获取所有用户并将其用于收件人。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。