我有一个django模特,

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

where I want to set constraint for qty something like this, >0 or <0,i.e the qty can be negative or positive but can not be 0.

在Django有什么直接的方法可以做到这一点吗?

推荐答案

你可以用Django's built-in validators-

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)]
     )

NOTE:

  1. 当您保存模型时,验证器不会自动运行,但是如果您使用的是ModelForm,它将在表单中包含的字段上运行您的验证器.查看此link了解更多信息.
  2. 要强制数据库级别的约束,请参阅下面的maertejin's answer.

Django相关问答推荐

Django:我的上下文变量不能用于重复的for循环

django 无法识别实现自定义后端

在不指定查找的情况下调用 prefetch_lated() 有用吗?

有没有办法在Django中按需/点击仅获取和序列化一部分数据以提高性能?

源自访问外键关系的模型方法 get_absolute_url 的 django 重复 SQL 查询

无法创建超级用户,因为 Django 中的一列(外键)不能为空

Django ORM:获取每个类别的月平均价格

初始填充 Django 表单

Django 模型中的隐藏字段

django 在 ubuntu 中安装在哪里

使用 Python / Django 的 Google API 示例的 Oauth

base.html 中的 Django 变量

django中的脏字段

在 Django 中使用邮箱地址或用户名登录用户

Django中的自定义排序

如何找到两个 Django 查询集的交集?

django 我们可以在预取相关模型上 Select 一个字段吗?

如何在 django 中捕获UNIQUE constraint failed404

Django 在视图之间传递数据

Django的不区分大小写的网址?