Пользовательская форма в виде строки

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

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.

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

Как происходит сбой? Какую ошибку это дает? Что такое трассировка?
Daniel Roseman 13.10.2009 13:00:03
1 ОТВЕТ

Я не думаю, что администратор всегда передает ключевое слово 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:
           ???????

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

1
23.05.2017 12:11:45