#django #django-validation
#django #django-проверка
Вопрос:
В моем приложении Django я использую PositiveSmallIntegerField
в одной из моих моделей, в которой минимальное значение для поля указано как в:
trc_frequency = models.PositiveSmallIntegerField(default=1, validators=[MinValueValidator(1)], ...)
Теперь, когда в форму вводится значение меньше 1 (ноль или отрицательное значение), возникает сообщение об ошибке, выдаваемое системой:
Убедитесь, что это значение больше или равно 0.
Принимая во внимание, что, поскольку минимальное значение, определенное для поля, равно «1» (единица), я бы предпочел, чтобы сообщение информировало пользователя о том, что минимально допустимое значение для поля равно 1 (единице),
в результате:
Убедитесь, что это значение больше или равно 1.
Что я пробовал до сих пор:
trc_frequency = models.PositiveSmallIntegerField(default=1, validators=[MinValueValidator(1, _('Must ensure this value is greater than or equal to %(limit_value)s.'))],...)
Но все равно получаем минимальное значение, указанное в сообщении об ошибке как 1 (ноль). Что еще более удивительно, текст сообщения также не изменяется с Убедитесь, что это значение равно … для Необходимо убедиться, что это значение равно ... Почему?
Где я ошибаюсь.
Редактировать
forms.py
class CreateTrcFreqForm(forms.ModelForm):
class Meta:
model = TrcFrequency
fields = ('aud_freq_id', 'short_text', 'trc_frequency')
widgets = {
'freq_id': forms.TextInput(attrs={'style': 'width:40px; text-align:left'}),
'short_text': forms.TextInput(attrs={'style': 'width:300px; text-align:left'}),
'trc_frequency': forms.TextInput(attrs={'style': 'width:40px; text-align:right'}),
}
## error_messages = {
## 'trc_frequency': {
## 'min_value': _('Frequency value must be >= 1') # %(limit_value)s')
## }
## }
error_messages
Сегмент был закомментирован для проверки проверки в models.py само по себе. Но даже при проверке формы %(limit_value)s')
здесь я получаю «0 (ноль)», а НЕ 1 (единицу). Причина, по которой вы можете видеть жестко закодированное значение «…должно быть >= 1′)».
Комментарии:
1. Какую версию Django вы используете? Я только что попробовал это и не могу повторить. Редактировать: На самом деле, можете ли вы добавить код своей формы, я думаю, в этом проблема.
2. Использование 2.0. Форма простая
ModelForm
.3. Я не смог воспроизвести это. Пробовал с 2.0 / 3.0. В конце концов, вы можете добавить валидаторы в саму форму, возможно, django неправильно получает валидаторы модели. Я думаю, что в коде есть еще кое-что.
4. Добавлен код формы (с некоторыми пояснениями ).
5. Я не могу объяснить это поведение, возможно, попробуйте обновить сам Django.