except models.Player.DoesNotExist: raise Http404 initial = { 'home_team': game.home_roster.team_id, 'away_team': game.away_roster.team_id, } if request.method == 'POST': game_form = forms.GameForm(request.POST, instance=game, initial=initial) if game_form.is_valid(): game = game_form.save() # if home_team or away_team were changed, clear the statistics if 'home_team' in game_form.changed_data: game.home_roster.team = game_form.cleaned_data['home_team'] game.home_roster.save() game.home_roster.player_statistics.all().delete() if 'away_team' in game_form.changed_data: game.away_roster.team = game_form.cleaned_data['away_team'] game.away_roster.save() game.away_roster.player_statistics.all().delete() if 'home_team' in game_form.changed_data or 'away_team' in game_form.changed_data: return redirect('game_edit', game_id=game.id) messages.success(request, 'Game {0} updated'.format(game)) return redirect('game_view', game_id=game.id) else: game_form = forms.GameForm(instance=game, initial=initial) return TemplateResponse(request, 'softball/game/edit.html', { 'game': game, 'game_form': game_form, })