我需要一个包含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,传递一个字典列表而不是一个查询集,但是在获取已经保存的数据时我得到了奇怪的行为。
有什么想法吗?