2015-10-19 50 views
2

我想发送电子邮件给所有用户提供顾问权限:perms.profiles.consultant_permission如何将邮件发送给Django组中的用户?

我的代码如下:

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) 

我该如何做到这一点?

+0

您可以重写Django的默认用户模型,以使'Profile'类([更多这里](https://www.caktusgroup.com/blog/2013/08/07/migrating-custom-user-model- django /)),你可以为该模型设置一个属性'permissions',并用顾问权限过滤用户,获取他们的电子邮件列表并发送邮件(在你的views.py中)。 – jlnabais

+0

我假设您的个人资料模型已经链接到用户帐户。看看这里如何抓住用户queryset:http://stackoverflow.com/a/992329/640916 –

回答

6

首先你需要得到所有用户提供特定的权限:

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

+0

工作就像一个魅力。谢谢! –

+0

欢迎@GustavoReyes! – Wtower

相关问题