Django поле формы error_messages не работает с IntegerField
Это моя модель :
class Bid(models.Model):
id = models.AutoField(primary_key=True)
bid = models.IntegerField(verbose_name='Prix demandé', null=False, blank=False)
note = models.TextField(verbose_name='Description', null=False, blank=False)
date = models.DateField(auto_now_add=True)
Это моя форма
class BidForm(forms.ModelForm):
class Meta:
model = Bid
fields = ['bid', 'note']
bid = forms.IntegerField(error_messages={'invalid': 'Please enter a valid bid'})
Когда ставка недействительна, я всегда получаю сообщение об ошибке по умолчанию, а не то, которое я указал
Убедитесь, что это значение больше или равно 1
Однако он работает, если я добавляю другое поле другого типа, например CharField
class BidForm(forms.ModelForm):
....
bid = forms.IntegerField(error_messages={'invalid': 'Please enter a valid bid'})
text = forms.CharField(error_messages={'required': 'Please enter a valid text'})
Убедитесь, что это значение больше или равно 1.
Пожалуйста, введите правильный текст
Это мое мнение
def post(self, request, *args, **kwargs):
project = get_object_or_404(Project, id=self.kwargs['id'])
form = BidForm(request.POST)
form.fields['bid'].validators = [MinValueValidator(1)]
if form.is_valid():
bid = form.save(commit=False)
bid.user = request.current_user
bid.project = project
bid.save()
return redirect(....)
else:
c = {'project':project, 'form': form}
return render(....)
в вашем представлении измените следующую строку
form.fields['bid'].validators = [MinValueValidator(1,message='Please enter a valid bid')]
и удалить
bid = forms.IntegerField(error_messages={'invalid': 'Please enter a valid bid'})
сформируйте свою форму