Я работаю над функцией отправки электронных писем пользователям из административной области django.
Я создал форму в forms.py
class SendEmailForm(forms.Form):
subject = forms.CharField(
widget=forms.TextInput(attrs={'placeholder': 'Subject'}))
message = forms.CharField(widget=forms.Textarea)
users = forms.ModelMultipleChoiceField(label="To",
queryset=User.objects.all(),
widget=forms.SelectMultiple())
И действие администратора в admin. py:
def send_emails(self, request, queryset):
emails = ""
for qr in queryset:
emails += qr.email + ", "
form = SendEmailForm(initial={'users': queryset})
context = {'form': form}
return render(request, 'admin/send_email.html', context)
send_emails.short_description = u"Send email"
class CustomUserAdmin(UserAdmin):
actions = [send_emails]
И из views.py я пытаюсь извлечь электронные письма пользователей, но я могу извлечь только сообщение и тему, когда я извлекаю переменных пользователей, я получаю количество пользователей.
def send_emails(request):
if request.method == 'POST':
form = SendEmailForm(request.POST)
print("STEP1")
if form.is_valid():
users = request.POST['users']
print(users)
и код шаблона
{% extends "admin/base_site.html" %}
{% load i18n admin_urls static %}
{% block content %}
<p>{% blocktrans %}Write your message here{% endblocktrans %}</p>
<form method="POST" action="{% url 'email' %}">{% csrf_token %}
<div>
<div>
<p>{{ form.users.errors }}</p>
<p>{{ form.users.label_tag }}</p>
<p>
{% for user in form.users.initial %}
{{ user.email }}{% if not forloop.last %}, {% endif %}
{% endfor %}
</p>
<select name="users" multiple style="display: none">
{% for user in form.users.initial %}
<option value="{{ user.id }}" selected>{{ user }}</option>
{% endfor %}
</select>
</div>
<div>
<p>{{ form.subject.errors }}</p>
<p>{{ form.subject.label_tag }}</p>
<p>{{ form.subject }}</p>
</div>
<div>
<p>{{ form.message.errors }}</p>
<p>{{ form.message.label_tag }}</p>
<p>{{ form.message }}</p>
</div>
<input type="submit" value="{% trans 'Send message' %}" />
</div>
</form>
{% endblock %}