exclude = ('owned_by', ) def __init__(self, user, *args, **kwargs): self.user = user # accept a Team to use for Player selection super(TeamPlayerForm, self).__init__(*args, **kwargs) def save(self, commit=True): player = super(TeamPlayerForm, self).save(commit=False) player.owned_by = self.user if commit: player.save() return player class TeamPlayerFormSet(BaseInlineFormSet): def __init__(self, user, *args, **kwargs): self.user = user super(TeamPlayerFormSet, self).__init__(*args, **kwargs) def _construct_form(self, index, **kwargs): # override _construct_form to add self.team to the StatisticForm upon # creation kwargs['user'] = self.user return super(TeamPlayerFormSet, self)._construct_form(index, **kwargs) TeamPlayerModelFormSet = inlineformset_factory( parent_model=models.Team, model=models.Player, formset=TeamPlayerFormSet, form=TeamPlayerForm, extra=20, max_num=20)