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