Как сделать экспорт на почту через админку Django?

Для реализации экспорта данных на почту через админку 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. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их!