В моей ModelForm есть поле Integer, которое должно содержать данные между 100000 и 999999. Возникли проблемы при проверке. Я перепробовал множество комбинаций, но это не помогло.
from django.forms import ValidationError
class myForm(forms.ModelForm):
pin = forms.IntegerField(label="PIN : ", required=True)
def clean(self):
if self.cleaned_data.get('pin') <= 999999 & self.cleaned_data.get('pin') >= 100000:
try:
return int(self.cleaned_data['pin'].strip())
except ValueError:
raise ValidationError("Invalid number")
Моя модель такая, как показано ниже:
from django.core.validators import MaxValueValidator, MinValueValidator
class Company(models.Model):
comppin = models.PositiveIntegerField(
validators=[MinValueValidator(100000), MaxValueValidator(999999)])
Мой взгляд ниже:
def company_form(request, id=0):
if request.method == 'GET':
if id == 0:
form = CompanyForm()
else:
company = Company.objects.get(pk=id)
form = CompanyForm(instance = company)
return render(request, 'company/company_form.html', {'form': form})
else:
if id==0:
form = CompanyForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, f'Company has been created.')
else:
company = Company.objects.get(pk=id)
form = CompanyForm(request.POST, instance=company)
if form.is_valid():
form.save()
messages.success(request, f'Company has been Updated.')
#else:
#messages.alert(request, f'Company has been not Updated.')
return redirect('company-list')
Может я что то не так делаю. Нужна помощь на этом этапе.