2015-10-19 56 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

相關問題