Не получается изменить из шаблона Django - PullRequest
0 голосов
/ 10 октября 2019

Я работаю над функцией отправки электронных писем пользователям из административной области 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 %},&nbsp;{% 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 %}

1 Ответ

0 голосов
/ 10 октября 2019

Вы пробовали users = request.GET['users'] Вы не отправляете ничего, что получаете.

...