Подтвердить что ты не робот

Диапазон Django для целочисленного поля модели как ограничение

У меня есть модель django,

class MyModel(models.Model)
    qty = model.IntegerField()

где я хочу установить ограничение для qty что-то вроде этого, > 0 или < 0, то есть qty может быть отрицательным или положительным, но не может быть 0.

Есть ли какой-либо прямой способ сделать это в Django?

4b9b3361

Ответ 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