I know that many questions exist about this same topic, but i am confused on one point. My intent is to show two ModelChoiceFields on the form, but not directly tie them to the Game model.
I have the following:
forms.py
class AddGame(forms.ModelForm):
    won_lag = forms.ChoiceField(choices=[('1','Home') , ('2', 'Away') ])
    home_team = forms.ModelChoiceField(queryset=Player.objects.all())
    away_team = forms.ModelChoiceField(queryset=Player.objects.all())
    class Meta:
        model = Game
        fields = ('match', 'match_sequence')
Views.py
def game_add(request, match_id):
    game = Game()
    try:
        match = Match.objects.get(id=match_id)
    except Match.DoesNotExist:
        # we have no object!  do something
        pass
    game.match = match
    # get form
    form = AddGame(request.POST or None, instance=game)
    form.fields['home_team'].queryset = Player.objects.filter(team=match.home_team )
    # handle post-back (new or existing; on success nav to game list)
    if request.method == 'POST':
        if form.is_valid():
            form.save()
            # redirect to list of games for the specified match
            return HttpResponseRedirect(reverse('nine.views.list_games'))
    ...
Where i am confused is when setting the queryset filter. First i tried:
form.home_team.queryset = Player.objects.filter(team=match.home_team )
but i got this error
AttributeError at /nine/games/new/1 
'AddGame' object has no attribute 'home_team'
...
so i changed it to the following: (after reading other posts)
form.fields['home_team'].queryset = Player.objects.filter(team=match.home_team )
and now it works fine.
So my question is, what is the difference between the two lines? Why did the second one work and not the first? I am sure it is a newbie (i am one) question, but i am baffled.
Any help would be appreciated.
 
     
     
    