我有一个自定义表单来显示目标。 目标在游戏中内联编辑。
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崩溃。
知道如何使用内联自定义表单吗?
答案 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可能指的是你想要实现的目标。