内联表单的自定义表单

时间:2009-10-13 11:40:02

标签: django django-models django-admin django-forms

我有一个自定义表单来显示目标。 目标在游戏中内联编辑。

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 个答案:

答案 0 :(得分: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:
           ???????

你想做的也很棘手。我认为this post可能指的是你想要实现的目标。