Вам необходимо импортировать MinValueValidator
из django.core.validators
модуля:
from django.core.validators import <b>MinValueValidator</b>
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=100)
description = models.CharField(max_length=4096)
price = models.DecimalField(
max_digits=15,
decimal_places=2,
validators=[<b>MinValueValidator(Decimal('0.01'))</b>]
)
def __str__(self):
return str(self.id)
Обратите внимание, что проверки не выполняются на уровне базы данных и не выполняются на уровне модели (если вы не запускаете их самостоятельно, например, с помощью my_product.full_clean()
).
Поскольку django -2.2 , Django имеет структуру для указать ограничения для уровня базы данных. Однако для этого необходимо, чтобы база данных поддерживала проверку ограничений (некоторые базы данных просто игнорируют предложения CHECK
). Вы можете указать это с помощью:
from django.core.validators import <b>MinValueValidator</b>
from django.db import models
from django.db.models import Q
from django.db.models import constraints
class Product(models.Model):
name = models.CharField(max_length=100)
description = models.CharField(max_length=4096)
price = models.DecimalField(
max_digits=15,
decimal_places=2,
validators=[<b>MinValueValidator(Decimal('0.01'))</b>]
)
class Meta:
constraints = [
constraints.CheckConstraint(
<b>check=Q(price__gte=Decimal('0.01'))</b>,
name='price_positive'
)
]
def __str__(self):
return str(self.id)