Для отправки данных с помощью электронной почты из административного интерфейса Django, вы можете использовать встроенную библиотеку Python `smtplib`.
Пример кода для отправки данных с помощью электронной почты из административного раздела Django:
```python
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def send_email(subject, body, to_email):
email = '[email protected]'
password = 'your_password'
msg = MIMEMultipart()
msg['From'] = email
msg['To'] = to_email
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
server = smtplib.SMTP('smtp.example.com', 587)
server.starttls()
server.login(email, password)
text = msg.as_string()
server.sendmail(email, to_email, text)
server.quit()
```
Чтобы добавить функционал в административный раздел проекта Django для экспорта данных модели факультатива, вы можете создать кастомное действие (action) и использовать его для экспорта данных.
Пример кода для добавления кастомного действия в Django административный раздел:
```python
from django.contrib import admin
from .models import Facultative
from django.http import HttpResponse
import csv
def export_facultatives(modeladmin, request, queryset):
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="facultatives.csv"'
writer = csv.writer(response)
writer.writerow(['Name', 'Description', 'Teacher'])
for facultative in queryset:
writer.writerow([facultative.name, facultative.description, facultative.teacher])
return response
export_facultatives.short_description = 'Export selected facultatives'
class FacultativeAdmin(admin.ModelAdmin):
list_display = ('name', 'description', 'teacher')
actions = [export_facultatives]
admin.site.register(Facultative, FacultativeAdmin)
```
Теперь в административном разделе Django вы увидите опцию "Export selected facultatives", которая позволит вам экспортировать выбранные факультативы в формате CSV. Вам также следует добавить функционал отправки этого CSV-файла по электронной почте, используя ранее написанный метод `send_email`.