如何循环查询集以实例化所有表单集?

How to loop over a queryset for instantiate all formset?

我希望我可以创建一个循环,使我能够实例化我现在编写的所有表单集

def access(request, page_id):
    if request.method == 'POST':  
            formset = ReplyFormSet(request.POST, request.FILES, initial=[{'instance':instance,}])
    if formset.is_valid():
        #...
        return ...
    else:
        formset = ReplyFormSet(queryset=Reply.objects.filter(question=questions))
        return ...

在最后一行,我恢复了数据库中的信息,但只是为了我的第一个表格!有没有办法做一个循环,以便它实例化我所有的形式?

我尝试过类似的方法,但它不起作用:

else:
    for form in formset:
    form.formset = ReplyFormSet(queryset=Reply.objects.filter(question=questions))
return ...

此行仅适用于我的第一个表单:

formset = ReplyFormSet(queryset=Reply.objects.filter(question=questions))

我该怎么做才能完全影响它?

我应该更改 ReplyForm 的 init 函数吗?

你可以试试:

formset = ReplyFormSet(queryset=Reply.objects.filter(question__in=questions))

使用 in 过滤器,您可以获得 questions 查询集中的每个 question