0
我想設計一個模型,讓我安排的活動(壘球比賽),並從一個更大的團隊陣容打造的遊戲名單:爲什麼我的Django自定義驗證器失敗?
class Game(models.Model):
DateTime = models.DateTimeField()
opponent = models.CharField(max_length = 50, default="TBD")
players = models.ManyToManyField(Player, limit_choices_to={'id__in': Player.objects.filter(active='True')},blank=True)
到目前爲止好。但是我也想給球員ManyToMany領域添加一些自定義驗證,這樣遊戲花名冊就符合關於最小和最大花名冊大小的聯盟規則,等等。
當我撥打以下清潔()方法,我得到一個ValueError返回(「遊戲」實例都需要有前多到許多可用於關係的主鍵值。):
def clean(self, *args, **kwargs):
from django.core.exceptions import ValidationError
#self.save()
players_count = self.players.count()
# Don't allow rosters with fewer than 9 players
if players_count < 9:
raise ValidationError('Rosters must have at least 9 players')
如果我插入被註釋掉的self.save,驗證器可以正常工作,但我最終會得到多個遊戲入口。
我是新手 - 這是我的第一個非教程Django項目 - 所以我猜這是一個相當簡單的答案。我在這裏探討了Django文檔並嘗試了一些看起來很有希望的東西,但沒有任何成果。
恐怕不適合我。得到AtrributeError:'遊戲'對象沒有屬性'cleaned_data' –
找出來。這個答案基本上可行,但我沒有創建一個新的表單類來處理它。 –