Formulário de modelo de django, restringir escolhas com base no valor no modelo de ForeignKey
Eu tenho dois modelos:League
eTeam
. Team
tem um link de chave estrangeira paraLeague
. Eu quero ser capaz de definir opções disponíveis para oTeam
com base nos valores armazenados emLeague
. Especificamente:
class League(models.Model):
number_of_teams = models.IntegerField()
class Team(models.Model):
league = models.ForeignKey(League)
draft_slot = models.IntegerField(choices=[(i+1,i+1) for i in range(?????????)])
Eu reconheço que não posso definir com precisão o meudraft_slot.choices
noTeam
modelo. Então, eu esperaria configurarTeam
igual a:
class Team(models.Model):
league = models.ForeignKey(League)
draft_slot = models.IntegerField()
Eu configurei umModelForm
doTeam
:
class TeamModelForm(ModelForm):
class Meta:
model = Team
E uma visão doTeam
ModelForm
:
def SetupTeam(request, fanatic_slug=None, league_slug=None):
league = League.objects.get(slug=league_slug)
form = TeamModelForm()
return render_to_response('league/addteam.html', {
'form': form
}, context_instance = RequestContext(request))
Que foo eu preciso para usarleague.id
, league.number_of_teams
então a visão deTeamModelForm
pré-populateam.league
e também renderiza um campo para representarteam.draft_slot
se parecer
draft_slot = models.IntegerField(choices=[(i+1,i+1) for i in range(league.number_of_teams+1)])