django - 获取所有用户并将它们用于 django 中的收件人
问题描述
我正在通过 Django 通知向用户发送通知,并且我有用户名正则表达式在 HTML 上工作,所以任何人都使用@username 发布它会发布并且 HTML 是可链接的,所以点击@username 它将把任何人带到用户名配置文件页面. 现在我使用 Django 信号来匹配用户名并打印出用户名。当我使用两个或三个@username 时,通知只会发送给一个@username,其他两个@username 不会收到通知。
模型.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', null=True, 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 来简单地做到这一点。然后获取所有用户并将它们用作收件人。
推荐阅读
- java - System.out.printf 不打印 netbeans 11.2(java) 中的格式
- python - 如何使用 Python 图像库 (PIL) 突出显示部分图像?
- apache-spark - saveAsTable 命令的默认路径是否有 spark 配置?
- python - 多处理策略 - 共享嵌套对象
- scala - Scala JDBC 项目不会在 Docker 容器之外运行?
- java - 通过每个项目的乐观锁定有效地将结果流存储在多个表中
- react-native - React Native 可重用卡片组件不会按预期显示
- c# - 无法在 Azure 中使用系统分配的托管标识使用 blob 存储操作
- python - 如何使用另一个轮廓的大小作为参考来测量轮廓的面积?
- javascript - height:auto 导致移动设备底部出现空白