0

我一直在使用 Python/Django 构建 CSV 导出。在发送更改列表中列出的所有项目时,一切都像魅力一样。

现在,我一直在尝试使用 Action 下拉菜单并仅导出通过复选框选择的那些项目,但我无法使其工作。

我当前的代码,即使使用“操作”下拉菜单也可以导出所有项目,无论检查了什么:

def export_this_list(self, request, queryset):
    """Generates participants list in Excel sheet."""

    csv_elements = Enrolment.objects.all().order_by('-training__date')
    for elem in csv_elements:

什么时候csv_elements交换request.POST.getlist显然没有任何作用。

def export_this_list(self, request, queryset):
    """Generates participants list in Excel sheet."""

    csv_elements = request.POST.getlist('_selected_action')

或者

    csv_elements = []
    for o in request.POST.getlist('_selected_action'):

问题:将我的模型与 POST 操作结合起来的语法是什么?

4

1 回答 1

1

当您这样做时,您会csv_elements = Enrolment.objects.all()从数据库中检索一组 Enrollment 对象,然后再对其进行迭代。

但是当你这样做时,csv_elements = request.POST.getlist('_selected_action')你有一个 ID 列表。您没有 Enrollment 对象;它们仍在数据库中,您还没有做任何事情来获取它们。ID 是数据库中对象的键,但就您的代码而言,到目前为止它们只是数字。

您实际上需要访问数据库来获取这些对象。这是这样做的一种方法:

selected_ids = request.POST.getlist('_selected_action')
csv_elements = Enrolment.objects.filter(id__in=selected_ids)
于 2017-09-11T11:24:46.113 回答