一.字段联合使用的限制设置:

有这么个需求,现有两个字段,A字段是选择用户是不是vip, B字段是统计用户的vip等级; 要求:

用户不是vip时,A选择false,B字段为空; 是vip时,A字段选择true,B字段就必须填用户的vip等级!

即B字段可为空,A字段须是true时,B字段就必须有值,否则后续查询就必然出错,所以单单使用

字段属相能否为空无法限制.解决:利用对象的save()方法,我们可自定义save,然后再调用父类该

方法之前做个判断,不满足要求就抛出异常,代码如下:(在表类中重写且继承父类)

二.代码如下:

def save(self, *args, **kwargs):
    if self.A == True:
        if not self.B:
            raise ValueError("B字段此时必须有值")
    super(Course, self).save(*args, **kwargs)  # 调用真正的save方法

django中models字段的联合限制的更多相关文章

  1. django 中多字段主键(复合、联合主键)

    django中不支持双主键.多主键. 要实现类似功能可以: classMeta: unique_together=(("driver","restaurant" ...

  2. django之models字段参数

    字段内部参数: null 数据库中字段是否可以为空 db_column 数据库中字段的列名 db_tablespace default 数据库中字段的默认值 primary_key 数据库中字段是否为 ...

  3. Django的Models字段含义

    在model中添加字段的格式一般为:  field_name = field_type(**field_options) 一  field options(所有字段共用) 1  null   默认为F ...

  4. django中models field详解

    本文参考自:django官方文档models/field 在model中添加字段的格式一般为:  field_name = field_type(**field_options) 一  field o ...

  5. django中的字段类型

    from http://www.cnblogs.com/lhj588/archive/2012/05/24/2516040.html Django 通过 models 实现数据库的创建.修改.删除等操 ...

  6. django中models阅读笔记

    一.使用数据库需要设置settings.py文件. DATABASES = { 'default': { 'ENGINE': 'django.db.backends.', # Add 'postgre ...

  7. django的models字段介绍

    #增加数据库数据方法#方法1CalcData.objects.create(var1 ='21',var2='22')#方法2obj =CalcData(var1 ='21',var2='22')jo ...

  8. Django中models定义的choices字典使用get_FooName_display()在页面中显示值

    问题 在django的models.py 中,我们定义了一些choices的元组,类似一些字典值,一般都是下拉框或者单多选框,例如 0对应男 1对应女等等 看下例子: class Area(model ...

  9. Django中常用字段

    一.Django框架的常用字段 Django ORM 常用字段和参数 常用字段 常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列 ...

随机推荐

  1. # Leetcode 67:Add Binary(二进制求和)

    Leetcode 67:Add Binary(二进制求和) (python.java) Given two binary strings, return their sum (also a binar ...

  2. Beta冲刺(8/7)——2019.5.30

    作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Beta冲刺(团队) 团队目标 切实可行的计算机协会维修预约平台 开发工具 Eclipse 团队信息 队员学号 队 ...

  3. xunsearch强制刷新

    $index = $xs->index; $index->flushLogging(); 等价于 util/Indexer.php --flush-log demo

  4. 024 如何让html引用公共的头部和尾部(多个html文件公用一个header.html和footer.html)

    前端静态html页面,封装公共的头文件(header:顶部页眉,顶部导航栏等部分)和尾部文件(footer:CopyRight.友情链接等部分) 当前方法:通过load()函数,引入公共头部和尾部文件 ...

  5. javascript去除字符串中的空格

    使用JavaScript去除字符串的空格,可以有两种方法,一种是使用replace()方法将空格(空白符)替换为空串,一种就是使用trim()方法去除字符串两端的空白字符. replace()方法 r ...

  6. python3.7环境安装

    wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libffi-devel-3.0.5-3.2.el6.x86_64.rpm rpm ...

  7. SSM基本配置详解

    需要查看SSM基本依赖和完整配置文件的到:SSM基本配置及依赖 示例项目:SSMDemo 1 Spring IOC容器配置 1.1 applicationContext.xml 1.1.1 配置数据源 ...

  8. service的yaml说明

    apiVersion: v1 kind: Service metadata: name: nginx-service labels: app: nginx spec: ports: - port: 8 ...

  9. ThinkPad L460 拆机加ngff ssd与内存

    ThinkPad L460 拆机加ngff ssd与内存 参考链接:http://blog.sina.com.cn/s/blog_82793ae60102wgtp.html 原有配置:i5 6200U ...

  10. Mysql系列(十一)—— 性能分析其他常用监控

    show status show status可以查询显示出当前mysql server的状态信息.该语句不需要任何权限. 对于show status可以时用like子句,模糊检索需要的状态信息.如: ...