我正在研究django中的批量更新功能 . 我有一个表格,显示我的数据库中的数据,用户选择他们想要编辑的对象 . 选择后,他们会点击“批量更新”按钮,然后将它们带到django ModelForm . 此页面的部分视图如下:
def BulkUpdate(request):
c = {}
c.update(csrf(request))
if request.method == "POST":
pks = request.POST.getlist("selection")
selected_objects = mymodel.objects.filter(pk__in=pks)
form = BulkUpdateForm(request.POST)
print (selected_objects)
if form.is_valid():
gender = form.data['gender']
print (gender)
print (selected_objects)
return render(request, 'bulkUpdate.html', {'form': form })
第一个 print (selected_objects)
成功打印在QuerySet中从先前模板中选择的所有对象 . 但是第二个 print (selected_objects)
返回一个空白的QuerySet . 例如,如果选择了三个对象,我的终端将打印
<QuerySet [<model: model object>, <model: model object>, <model: model object>]>
但在提交有效表格后会打印出来
<QuerySet []> <QuerySet []>
两个,因为我在我的代码中打印了两次..
我的主要问题是如何将这三个对象放入我的form.is_valid()函数中 . 我想在两个调用中以相同的方式打印我的变量 selected_objects
. 任何帮助或建议都是惊人的 . 感谢您的时间 .
1 回答
我成功地使用此方法在url中获取pk 's of the objects selected, take it to a form template while saving the pk',然后使用url去除pk并使用我之前使用的方法过滤我的对象 . 从那里,在我的
BulkUpdateForm()
中输入gender
的任何输入都将替换所有选定对象的性别字段 . 感谢大家的帮助,希望我的片段可以在以后帮助某人 .