【发布时间】:2014-12-30 02:30:45
【问题描述】:
我的设置涉及创建游戏实例和与游戏绑定的团队的表单。与游戏相关的一组团队被输入到名为 GameTeamsFormset 的表单集中。
我的问题是,有时 GameTeamsFormset 中的字段为空,应该在我的数据库中创建空记录(是的,我想要这个)但是即使表单集通过验证,实际上也没有创建记录我可以通过管理员手动添加这些空记录。 (嗯,它们并不完全是空的,因为它们有一个将它们绑定到 Game 实例的外键)。那么,如何让我的视图保存表单集中每个空表单的记录?
Views.py
def addGame(request, league_id):
if request.method == 'POST':
league = League.objects.get(pk = league_id) # get the league object
gameform = GameForm(request.POST) # initialize gameform with the POST data
if gameform.is_valid():
newgame = gameform.save(commit=False)
newgame.league = league # set the league
gameteamsform = GameTeamsFormset(request.POST, instance=newgame)
if gameteamsform.is_valid():
newgame.save() # save the game
gameteamsform.save()
return editleague(request, league_id)
else:
return HttpResponseRedirect("/") #needs fixin
else:
return HttpResponseRedirect("/") #needs fixin
else:
return HttpResponseRedirect("/") #needs fixin
Forms.py
class GameForm(ModelForm):
class Meta:
model = Game
fields = ['game_heading', 'game_date', 'game_time']
widgets = {
'game_heading':TextInput(attrs={'type':'text', 'class':'form-control input-md'}),
'game_date':TextInput(attrs={'type':'date', 'class':'form-control'}),
'game_time':TextInput(attrs={'type':'time', 'class':'form-control'}),
}
GameTeamsFormset = inlineformset_factory(Game, GameTeams, extra=2,
fields=['team', 'placed', 'score'],
widgets={'team': Select(attrs={'class':'form-control'}),
'placed': Select(attrs={'class':'form-control'}),
'score': TextInput(attrs={'class':'form-control'})},
)
【问题讨论】:
标签: django django-forms django-views