Python: Model.objects.all() - 如何使用 POST 复选框遍历它

Python: Model.objects.all() - how to iterate through it using POST checkboxes

我一直在使用 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_elementsrequest.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 操作结合起来的语法是什么?

当您执行 csv_elements = Enrolment.objects.all() 时,您会从随后迭代的数据库中检索一组注册对象。

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

您需要实际访问数据库才能获取这些对象。这是一种方法:

selected_ids = request.POST.getlist('_selected_action')
csv_elements = Enrolment.objects.filter(id__in=selected_ids)