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

时间:2017-09-11 10:32:13

标签: python django post checkbox changelist

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

1 个答案:

答案 0 :(得分:1)

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

但是当你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)