Для реализации экспорта данных на почту через админку Django, следует выполнить несколько шагов:
1. Установите библиотеку Django Q. Она позволит вам асинхронно отправлять почту.
pip install django-q
2. Добавьте django_q
в INSTALLED_APPS
вашего проекта и сконфигурируйте соединение с базой данных для хранения очереди заданий.
INSTALLED_APPS = [ ... 'django_q', ] Q_CLUSTER = { 'name': 'mycluster', 'workers': 4, 'recycle': 500, 'timeout': 60, 'config': 'your_project.settings', }
3. Создайте задачу для отправки почты. Создайте файл tasks.py
в вашем приложении и определите в нём функцию для отправки почты.
from django.core.mail import send_mail def send_email_task(subject, message, recipient_list): send_mail(subject, message, None, recipient_list)
4. Зарегистрируйте вашу задачу в админке Django. Создайте файл admin.py
в вашем приложении и зарегистрируйте вашу задачу.
from django.contrib import admin from .tasks import send_email_task class EmailAdmin(admin.ModelAdmin): def send_email(self, request, queryset): for item in queryset: send_email_task('Subject', 'Message', [item.email]) send_email.short_description = 'Send email' actions = [send_email]
5. Обновите модель, к которой вы хотите добавить экспорт на почту, чтобы у неё было поле email
.
from django.db import models class MyModel(models.Model): ... email = models.EmailField()
6. Зарегистрируйте вашу модель в админке и укажите метод send_email
в actions
.
@admin.register(MyModel) class MyModelAdmin(admin.ModelAdmin): actions = ['send_email']
Теперь в админке Django у вас появится возможность выбрать объекты модели MyModel
и отправить письмо на указанные имейлы.
Надеюсь, этот подробный ответ поможет вам реализовать экспорт на почту через админку Django. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их!