Как применить положительное число в моем поле модели Python / Django? - PullRequest
0 голосов
/ 25 февраля 2019

Я использую Django и Python 3.7.Я также использую PostGres 9.6.У меня есть следующее поле в моей модели:

class ArticleStat(models.Model):
    ...
    score = models.FloatField(default=0, null=False)

Есть ли способ записать ограничения, чтобы при генерации моей миграции базовая база данных применяла FloatField, который всегда равен или больше нуля?Я не хочу никаких отрицательных чисел в этом поле.

1 Ответ

0 голосов
/ 25 февраля 2019

К сожалению, в django нет PositiveFloatField.Но вы можете использовать MinValueValidator .

MinValueValidator код:

class MinValueValidator(BaseValidator):
    message = _('Ensure this value is greater than or equal to %(limit_value)s.')
    code = 'min_value'

    def compare(self, a, b):
        return a < b  # super simple.

Добавить валидатор в поле с плавающей точкой.

class YourModel(models.Model):
    po_float = models.FloatField(validators=[MinValueValidator(0)]

m = YourModel(po_float=-1)
m.clean_fields()  # raise ValidationError

Примечание : проверка django не запускается автоматически.Таким образом, вы должны запустить obj.clean_fields() или obj.clean().Проверьте это Документ

...