Как получить данные из форм в наборе форм, в то время как набор форм не валидируется из django admin custom actions interim form page

Я не знаю, как получить обновленные поля из форм в наборе форм в отдельные сообщения, потому что набор форм никогда не является действительным.

Я уже пробовал "for form in formset" внутри и вне form.is_valid() с .get['field'], .get('field') и cleaned_data.

на промежуточной странице действий администратора пользователь должен иметь возможность видеть и редактировать начальные значения формы, а при отправке сообщения должны быть отправлены сообщения с обновленными или не обновленными значениями формы на нужную почту. Но набор форм никогда не является действительным. Это из-за того, как функционируют действия администратора или что происходит?

¨ forms.py

class ReviewRequestTemplate(forms.Form):
    emailtemplate = forms.CharField(widget=forms.Textarea)
    employers_email = forms.EmailField()
    review_link = forms.CharField()
    subject = forms.CharField()

admin.py

class EmployerAdmin(TranslationAdmin):
    list_display = ('name', 'website', 'review_request_sent',)
    actions = ['request_review',]

    def request_review(self, request, queryset):
        RequestTemplateFormset = formset_factory(ReviewRequestTemplate, extra=0)
        #formset initial is a list comprehension
        #for employer in queryset
        formset = RequestTemplateFormset(initial=[{'emailtemplate': f"Hello {employer.name} Review our servie right NOW! Here is your link:",'employers_email':employer.email, 'review_link':get_current_site(request).domain +reverse('review', kwargs={'uidb64': urlsafe_base64_encode(force_bytes(employer.pk)), 'token':account_activation_token.make_token(employer)}), 'subject':'Please let us better our services'} for employer in queryset])

        if request.POST.get('post'):
            formset = RequestTemplateFormset(request.POST)

            if formset.is_valid():
                print('valid')
                message = f"email:{form.get('employers_email')}, subject:{form.get('subject')}, message: {form.get('emailtemplate') + form.get('review_link')}"
            queryset.update(review_request_sent=True)
            else:
                print('not valid')

            all_sent = request.POST.items()
            return HttpResponse(all_sent)
       
        else:
            context = {
                'title': "Are you sure?",
                'queryset': queryset,
                'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME,
                'formset': formset
            }
            return TemplateResponse(request, 'admin/requestreview.html', #TemplateResponse
                context)
    request_review.short_description = "Send review requests"

html

{% extends "admin/base_site.html" %}
{% load i18n l10n %}

{% block content %}
<form action="" method="post">{% csrf_token %}
    {{ formset.errors }}
    <p>The following videos will be accepted:</p>

    <ul>{{ queryset|unordered_list }}</ul>

    <div>
    {% for obj in queryset %}
    <input type="hidden" name="{{ action_checkbox_name }}" value="{{ obj.pk|unlocalize }}" />
    {% endfor %}
    <input type="hidden" name="action" value="request_review" />
    <input type="hidden" name="post" value="yes" />
    <input type="submit" value="{% trans "Yes, I'm sure" %}" />
    </div>

    {%for form in formset%}
    {{form.as_p}}
    {%endfor%}
</form>
{% endblock %}
Вернуться на верх