是否有更多pythonic方式将查询集传递给django modelformset?

时间:2014-11-06 23:42:19

标签: python django django-queryset django-forms

我需要一个包含25个物体(足球队员)的表格。用户记录,查询获取了他的球队的球员,并显示他们允许他选择谁在第一队,谁在板凳上,谁离开。

现在,如果用户登录,并且没有为实际夹具插入他的团队,视图将创建初始数据并向他显示包含初始数据的表单。如果他已经让球队进入,如果他想在比赛开始前编辑阵容,他会看到他最后的选择,他将能够进行编辑。

当用户访问页面时,视图查询数据库:如果查询集为空,则使用bulk_create创建初始数据,然后我重新创建数据,创建一个不会为空的查询集。我用它填充了formset;如果查询返回了某些内容,则查询集将填充表单集。

我的观点结构简化如下:

def view_name(request):


    MyModelFormSet = modelformset_factory(MyModel, form = MyModelForm ,formset = BaseBaseMyModelFormSet, extra=0)


    if request.method=='POST':

        formset = MyModelFormSet(request.POST, request.FILES)

        if formset.is_valid():
            formset.save()
        else:

        return render(request,'ins_form.html',{'league':league,'formset':formset})
    else:        
        team=request.user.blablablagetterightteam
        q_set=MyModel.objects.filter(giornata=giornata_attuale, team=team)

        if len(q_set)==0:
            Rosa=team.Rosa()
            MyModel.objects.bulk_create([MyModel(footballer=pl.footballer, giornata=giornata_attuale, team=team) for pl in Rosa])

            q_set=MyModel.objects.filter(giornata=giornata_attuale, team=team)

    formset = MyModelFormSet(queryset=q_set)

    return render(request, 'ins_form.html', {'league':league,'formset': formset})

现在,我宁愿不使用bulk_create保存查询,我只想在提交数据时保存数据。我尝试使用initial,传递一个字典列表而不是一个查询集,但是在获取已经保存的数据时我得到了奇怪的行为。

有什么想法吗?

0 个答案:

没有答案