我正在嘗試過濾表單選擇,以便用戶只能從某些競賽中選擇玩家。我在形式改變了_init_
功能如下,但沒有任何變化Django過濾表單字段的外鍵
forms.py
from django.forms import ModelForm
from matchdaycentremodel.models import FantasyTeam
from playerteamstats.models import Player
class FantasySeasonForm(ModelForm):
class Meta:
model = FantasyTeam
def _init_(self,*args,**kwargs):
super(FantasySeasonForm,self)._init_(**kwargs)
self.fields['player1'].queryset = playerteamstats.models.Player.objects.filter(team__competition__pk=2)
相關模型..
models.py(playerteamstats)
class Competition(models.Model):
COMP_ID = models.AutoField(primary_key=True)
season = models.ForeignKey(Season) #Foreign Key
competition_id = models.IntegerField()
competition_name = models.CharField(max_length=200)
competition_code = models.CharField(max_length=6)
def __str__(self):
return '%s (%s)' % (self.competition_name, self.season.season_id) #e.g. 'English Barclays Premier League (2014)'
class Team(models.Model):
team_id = models.IntegerField(primary_key=True)
competition = models.ForeignKey(Competition) #Foreign Key
team_name = models.CharField(max_length=200)
def __str__(self):
return self.team_name
class Player(models.Model):
player_id = models.IntegerField(primary_key=True)
team = models.ForeignKey(Team) #Foreign Key
player_name = models.CharField(max_length=140)
def __str__(self):
return self.player_name
model s.py(matchdaycentremodel)
class FantasyTeam(models.Model):
FANTASY_TEAM_ID = models.AutoField(primary_key=True)
player1 = models.ForeignKey(Player, related_name='player1')
player2 = models.ForeignKey(Player, related_name='player2')
player3 = models.ForeignKey(Player, related_name='player3')
views.py
@login_required
def entry(request):
fantasyTeamForm = FantasySeasonForm() #Form to store each player in the fantasy team
if request.method == 'POST':
fantasyTeamForm = FantasySeasonForm(request.POST or None)
fantasyTeamForm.fields
if fantasyTeamForm.is_valid():
fantasyTeamForm.save()
return HttpResponseRedirect('/season/entrysuccess') #page on success
args = {}
args.update(csrf(request))
args['form'] = fantasyTeamForm
return render_to_response('entry.html', args, context_instance=RequestContext(request))
如何過濾形式的PLAYER1,使其只能從一定的競爭來選擇?
仍然沒有區別,只顯示所有玩家:'( – Matchday 2014-09-21 13:22:57