哇,我在這上面很難。我必須做錯了,我得到了令人難以置信的查詢量。Django表單模型和編輯
所以,我的模型如下: 球員 氏族 匹配(如在遊戲比賽) MatchMap(地圖打了一場的) MatchPlayer(在比賽的球員)
所有這些通過外鍵關聯,沒有m2m關係。一個玩家可以在一個家族中,一場比賽涉及兩個家族。一場比賽可以有任何數量的地圖,只有來自兩個隊伍的球員可以參加比賽(儘管未來球員可能不會與他們在這場比賽中的同一個隊伍中,所以我指定他們在比賽)。
所以,我提交了匹配,一切正常。但要編輯這些信息,這是很重要的! 對於比賽的編輯MatchPlayers我嘗試使用inlineformset_factory
PlayersFormSet = inlineformset_factory(MatchBetweenClans, MatchPlayer)
playersForms = PlayersFormSet(instance=match)
這已經開始壞,因爲在比賽中的每個實例,Django的訪問數據庫,獲取的所有球員名單。例如,如果6名選手都在比賽,我有被inlineformset_factory
provived 2點空的形式,我看到日誌
SELECT
...
FROM
`accounts_customuser`
8倍。
現在,即使這對我來說是正確的,它不會做我所需要的。當將球員加入比賽時,並非所有球員都應該在名單上,只有那些來自2個指定部落的球員,理想的是作爲複選框的形式(每個複選框是一個部族的球員)。在提交比賽,這是很容易做到:
clan1PlayerList = CustomUser.objects.filter(clan=clan1Instance)
clan2PlayerList = CustomUser.objects.filter(clan=clan2Instance)
playersClan1 = forms.ModelMultipleChoiceField(queryset=clan1PlayerList, label="Jogadores - "+clan1Instance.tag+"", widget=forms.CheckboxSelectMultiple(attrs={'class':'input_checkbox'}))
playersClan2 = forms.ModelMultipleChoiceField(queryset=clan2PlayerList, label="Jogadores - "+clan2Instance.tag, widget=forms.CheckboxSelectMultiple(attrs={'class':'input_checkbox'}))
反正是有,我可以有這樣的一個公式進行編輯?我無法找到一種方法將隊伍的球員列表和正確的球員發送給表單。 謝謝
如果您發佈了模型而不是文字描述,那麼您的問題會更容易閱讀。不抱怨,只是我的意見。 :-) – cethegeek 2009-12-24 14:56:00