Ok, I found a way, but it's still not perfect. class GoalForm(forms.ModelForm):
class Meta: model = Goal def __init__(self, *args, **kwargs): super(GoalForm, self).__init__(*args, **kwargs) self.fields['goal_scorer'].queryset = Player.objects.filter(gameroster__game=self.instance.game) class GoalInline(admin.TabularInline): model = Goal extra = 4 #form = GoalForm class GameAdmin(admin.ModelAdmin): list_display = ('date_time', 'home_team', 'opponent_team', 'is_home_game', 'season', 'league', 'type', 'result') list_filter = ['league', 'season'] inlines = [GameRosterInline, GoalInline, PenaltyInline] ordering = ('date_time',) That works as long as I edit the model game not inline. The selection of player gets limited as I want. When I try to edit it inline in the game, the GoalForm seems not to work. It's going to be ignored. When I try to comment in "form = GoalForm", the whole app doesn't run anymore. I got a DoesNotExist exception, but I think this is because it can't register the form.. Any ideas who to activate my custom form for the inline mode? Chris 2009/10/12 Christian Wittwer <wittwe...@gmail.com>: > Hi, > I have a question regarding the admin interface of django. > > My models > > class Team(models.Model): > name = models.CharField(max_length=10) > > class Player(models.Model): > lastname = models.CharField(max_length=60) > > class Goal(models.Model): > game = models.ForeignKey(Game) > goal_scorer = > models.ForeignKey(Player,related_name='goal_scorer',blank=True,null=True) > > class Game(models.Model): > home_team = models.ForeignKey(Team,related_name='home_team') > > class GameRoster(models.Model): > player = models.ForeignKey(Player) > game = models.ForeignKey(Game) > > Each Goal is scored by a Player in a Game. I'm using a inline form to > insert goals for a game. > The players are somehow connected to the team (gameroster), and > therefore to the game. > > I found the place to hook in to limit the choices of player. > > class GoalInline(admin.TabularInline): > model = Goal > extra = 4 > > def formfield_for_foreignkey(self, db_field, request, **kwargs): > if db_field.name == "goal_scorer": > kwargs["queryset"] = > Player.objects.filter(gameroster__game=self.game) > return db_field.formfield(**kwargs) > > return super(GoalInline, > self).formfield_for_foreignkey(db_field, request, **kwargs) > > > The missing point is now: How to access game, which is connected to > the goal to limit the players? > I tried self.game as you can see, but that doesn't work. > How can I access the model from within this function? > > Chris > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---