Пользовательская форма в виде строки - PullRequest
3 голосов
/ 13 октября 2009

У меня есть настраиваемая форма для отображения целей. Цели редактируются внутри игры.

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', 'result')
   list_filter = ['league', 'season']
   inlines = [GameRosterInline, GoalInline, PenaltyInline]
   ordering       = ('date_time',)

Моя пользовательская форма работает до тех пор, пока я редактирую ее "автономно". Как только я отредактирую это в строке, пользовательская форма будет игнорироваться. Комментирование в форме параметров класса GoalInline приводит к сбою Django.

Есть идеи, как использовать встроенную пользовательскую форму?

1 Ответ

1 голос
/ 30 апреля 2010

Я не думаю, что администратор всегда передает ключевое слово instance при создании экземпляра встроенных форм. Поэтому вам лучше проверить, существует ли атрибут self.instance.

class GoalForm(forms.ModelForm):

   class Meta:
       model = Goal

   def __init__(self, *args, **kwargs):
       super(GoalForm, self).__init__(*args, **kwargs)
       if self.instance:
           self.fields['goal_scorer'].queryset = \
Player.objects.filter(gameroster__game=self.instance.game)
       else:
           ???????

также то, что вы хотите сделать, это сложно. Я думаю этот пост может относиться к тому, что вы пытаетесь достичь.

...