【问题标题】:How to send_mail to Users in group in Django?如何在 Django 中向组中的用户发送邮件?
【发布时间】:2016-01-17 22:33:52
【问题描述】:

我想向所有具有顾问权限的用户发送电子邮件:perms.profiles.consultant_permission

我的代码如下:

model.py

 class Profile(models.Model):
    //some attributes

    class Meta:
         permissions = (
             ('consultant_permission', 'Consultant Permission'),
         )

view.py

consultant_msg_html = render_to_string('email/consultant_review_email.html', context)
send_mail("Register sent to review", 
    consultant_msg_html, 
    registration.consultant.email, 
    [registration.consultant.email,], 
    html_message=consultant_msg_html, 
    fail_silently = False)

我怎样才能做到这一点?

【问题讨论】:

  • 您可以覆盖 Django 默认用户模型,以创建 Profile 类 (more here),您可以为该模型设置属性 permissions,并过滤具有顾问权限的用户,获得他们的电子邮件列表并发送电子邮件(在您的views.py中)。
  • 我假设您的配置文件模型已经链接到用户帐户。看看这里如何获取用户查询集:stackoverflow.com/a/992329/640916

标签: python django email


【解决方案1】:

首先你需要获得所有具有特定权限的用户:

from django.contrib.auth.models import User, Permission
from django.db.models import Q

perm = Permission.objects.get(codename='consultant_permission')  
users = User.objects.filter(Q(groups__permissions=perm) | Q(user_permissions=perm) ).distinct()
recipients = list(i for i in users.values_list('email', flat=True) if bool(i))

然后你可以在你的send_email() 中使用recipients

【讨论】:

  • 工作就像一个魅力。谢谢!
  • 欢迎@GustavoReyes!
猜你喜欢
  • 2023-04-02
  • 2019-12-15
  • 2017-11-19
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 2022-12-08
  • 2020-06-11
  • 2021-03-08
相关资源
最近更新 更多