有没有一种更像python的方式将queryset传递给Django模型表单集?

2024-10-08 18:28:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个有25个物体的表格(足球队的球员)。用户登录后,查询获取了他所在球队的球员,并显示他们允许他选择谁进入一线队,谁坐板凳,谁退出。你知道吗

现在,如果一个用户登录,并且没有为实际的fixture插入他的团队,那么视图将创建初始数据并向他显示带有初始数据的表单。如果他已经加入了球队,如果他想在比赛开始前编辑阵容,他会看到他最后的选择,他将能够编辑。你知道吗

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

我的观点结构简化如下:

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,传递字典列表而不是queryset,但在获取已经保存的数据时,出现了奇怪的行为。你知道吗

你知道吗?你知道吗


Tags: 数据用户form表单requestcreatebulkteam

热门问题