Диапазон Django для целочисленного поля модели как ограничение
У меня есть модель django,
class MyModel(models.Model)
qty = model.IntegerField()
где я хочу установить ограничение для qty
что-то вроде этого, > 0 или < 0, то есть qty
может быть отрицательным или положительным, но не может быть 0.
Есть ли какой-либо прямой способ сделать это в Django?
Ответы
Ответ 1
Вы можете использовать встроенные валидаторы Django -
from django.db import models
from django.core.validators import MaxValueValidator, MinValueValidator
class MyModel(models.Model):
qty = models.IntegerField(
default=1,
validators=[MaxValueValidator(100), MinValueValidator(1)]
)
ПРИМЕЧАНИЕ. Валидаторы не будут запускаться автоматически при сохранении модели, но если вы используете ModelForm, он запустит ваши валидаторы в полях, которые включены в форму. Для получения дополнительной информации см. Ссылку .
Ответ 2
Вам нужно будет создать настраиваемый валидатор
from django.core.exceptions import ValidationError
def validate_number(value):
if something : # Your conditions here
raise ValidationError('%s some error message' % value)
И затем используйте этот валидатор в своей модели
from django.db import models
class MyModel(models.Model):
field = models.IntegerField(validators=[validate_number])
Ответ 3
Если вы используете postgres, вы можете использовать поля диапазона для указания диапазона.
Проверьте это: Поля диапазона в django