0
我已經創建了一些自定義管理驗證,可以在一種情況下像我想要的那樣工作。如何在django管理驗證器中處理尚未創建的列表
它旨在檢查以確保在多對多字段中創建的列表具有正確數量的項(「玩家」),並且列表中男性:女性的比例可以接受。
def clean(self):
super(GameRosterForm, self).clean()
players = self.cleaned_data.get('players', None)
RosterRulesOn = self.cleaned_data.get('RosterRulesOn', None)
women = players.filter(sex='F')
womenPct = int((women.count()/float(players.count()))*100)
if RosterRulesOn is True and players.count() < 8:
raise ValidationError('Rosters must have at least 8 players. You have only selected %s.' % (players.count()))
if RosterRulesOn is True and players.count() > 18:
raise ValidationError('Rosters cannot have more than 18 players. You have selected %s.' % (players.count()))
if RosterRulesOn is True and womenPct < 40:
raise ValidationError('Women must make up at least 40 percent of roster. They only constitute %s percent now.' % (womenPct))
return self.cleaned_data
正如我說的,它工作正常的大部分時間,但是當用戶還沒有一名球員加入到M2M它返回一個錯誤:有一個參考名單'對象有沒有屬性「過濾器」 women = players.filter(sex ='F')line。
我試過一些「如果」和「嘗試」條件試圖繞過問題,但找不到可行的解決方案。
這樣的作品,但它發現了一個類似的問題與計數()語句。用len()代替所有工作。謝謝。 –