У меня есть форма, в которой есть IntegerField, это поле не является обязательным. Когда я отправляю свою форму, я хотел бы проверить, правильно ли заполнено это поле. Допускаются только 3, 4 или пустое поле.
forms.py
class PhaseCreationForm(forms.ModelForm):
typePhase = forms.CharField(label='Type of phase', widget=forms.TextInput(attrs={
'class':'form-control',
'placeholder': 'Enter the type of the phase'}))
nbTeamPerPool = forms.IntegerField(label='Number of teams per pool', required=False, widget=forms.NumberInput(attrs={
'class':'form-control',
'placeholder':'3 or 4'}))
nbTeamQualified = forms.IntegerField(label='Number of qualified', widget=forms.NumberInput(attrs={
'class':'form-control',
'placeholder':'Enter the number of qualified'}))
category = MyModelChoiceField(queryset=Category.objects.all(), widget=forms.Select(attrs={
'class':'form-control'}))
class Meta:
model = Phase
fields = [
'typePhase',
'nbTeamPerPool',
'nbTeamQualified',
'category',
]
def clean_nbTeamPerPool(self, *args, **kwargs):
nbTeamPerPool = self.cleaned_data.get("nbTeamPerPool")
if nbTeamPerPool < 3 or nbTeamPerPool > 4:
raise forms.ValidationError("The number of team per pool is between 3 and 4. Please try again.")
return nbTeamPerPool
Когда поле пусто, у меня есть это ошибка :
'<' не поддерживается между экземплярами 'NoneType' и 'int' <Br>
Я понимаю эту ошибку, я просто не могу сравнить None с целым числом, поэтому мой вопрос: как я могу сравнить ни одно с целым числом, или вы можете предложить мне решение, чтобы пустое поле было принято?
Edit:
У меня есть другой вопрос, который пришел ко мне сейчас. Как вы видите, в моей форме есть поле "категория", это внешний ключ к модели "Категория", и я хотел бы знать, как я могу получить доступ к полям категории в методе clean
?