首页 > 解决方案 > 如何在 django 管理操作的中间页面中从 request.POST 获取所有值

问题描述

在此处输入图像描述

如上图,按下导出按钮后,只有“Django 1”通过 print() 命令返回。

想知道如何从这种交互中获得所有三个值?

# admin.py
def export(self, request, queryset):
        if "apply" in request.POST:
            queryset.update(status="exported")
            title = request.POST['title']
            print(title, _selected_action)

            self.message_user(request,
                              "Changed status on {} orders".format(queryset.count()))
            return HttpResponseRedirect(request.get_full_path())

        context = admin.site.each_context(request)  
        context.update({
            'data': queryset
        })             
        return render(request, 'admin/export.html', context=context)
    export.short_description = "export"

<!-- export.html -->
{% extends "admin/base_site.html" %}
{% block content %}

<form action="" method="POST">
    {% csrf_token %}
    {% for d in data %}
        <p>
            {{ d.pk }}.{{ d }}
            <input type="text" name="title" value={{ d.title }} size="50" autofocus />
        </p>
    <input type="hidden" name="_selected_action" value="{{ d.pk }}" />
    {% endfor %}

    <input type="hidden" name="action" value="export" />
    <input type="submit" name="apply" value="Export" />
</form>
{% endblock %}

标签: djangodjango-admin

解决方案


正如@DanielRoseman 在评论区提到的那样, request.POST.getlist('title') 在这里效果很好。


推荐阅读