2009-10-13 80 views
3

我有一個自定義表單來顯示目標。 目標在遊戲中內聯編輯。嵌入式表單中的自定義表格

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

它如何崩潰?它給了什麼錯誤?追溯是什麼? – 2009-10-13 13:00:03

回答

1

我不認爲管理員在實例化嵌入式表單時總是傳遞實例關鍵字。所以你最好檢查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可能指的是你想要達到的目標。