:~$ cat admin.py
# -*- encoding: utf-8 -*-
from django.contrib import admin
# Sadece mesaj icin
from django.contrib import messages
# Eposta gonderimi icin
from django.core.mail import EmailMessage
# Epostanin sablonu icin
from django.template.loader import get_template
def email_gonder(modeladmin, request, queryset):
# Secili olan elemani almak icin
selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
# birden fazla eleman secili ise donguye sokmak icin
for uye in selected :
uye_ = userStat.objects.get(id=uye)
variableX = XXXX.objects.get(bla bla bla)
. . . . .
htmly = get_template('mail.html')
d = Context({ 'uye': uye_, 'variable in template': variableX, })
subject, from_email, to = "Email Subject", "Name <do-not-reply@xxxxxxxx.com>", [uye_.email]
html_content = htmly.render(d)
msg = EmailMessage(subject, html_content, from_email, to)
msg.content_subtype = 'html'
msg.send()
# Admin panelde karsimiza uyari gelmesi icin. Burada msg.send() fonksiyonu istege gore koşula tabi tutulur.
messages.info(request, "%s mail adresine mail basariyla gonderildi..." % uye_.email)
# Admin panelde eylemler/actions bolumunde bu sekilde belirir.
email_gonder.short_description = "Secili uyelere mail gonder"
class UserStatAdmin(admin.ModelAdmin):
list_display = ['username', 'email']
# Modelde varolan sinifin yapisina gore siralama degistirilebilir
ordering = ['username']
# Harici admin eylemleri burada belirtilir (bknz : fonksiyon adı)
actions = [email_gonder]
Böylece admin panelde userStats bölümünde Eylemlerde "Secili uyelere mail gonder" seklinde belirir.