配置数据库信息

  1、settings配置

  DATABASES = {

    "default": {
        "ENGINE""django.db.backends.mysql",
        "NAME""你的数据库名称",  # 需要自己手动创建数据库
        "USER""数据库用户名",
        "PASSWORD""数据库密码",
        "HOST""数据库IP",
        "POST"3306
    }
  }

  2、在django项目的同名目录下的init文件中添加以下代码

    import pymysql

    pymysql.install_as_MySQLdb()

  

  补充:

    使用django2.0以上进行开发,不需要添加上述代码。

    django2.0以上,直接使用mysqlclient,将django与mysql数据库进行连接。

      pip install mysqlclient,安装该模块即可

    ps:

      网上有很多使用django2.0进行开发的情况下,使用pymysql模块进行数据库连接出现报错:

        django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

      然后需要通过修改源码来解决,这样也能够解决问题,但是毕竟修改源码对后续项目开发是否会有影响是不可预知的,

      所以,个人推荐django2.0以上开发,直接安装mysqlclient模块,进行数据库操作。

模型类

  1、定义模型类时需要继承models.Model

  2、定义字段类型的时候,也是通过models来调用对应的字段类型

  

  由于一张表中必须要有一个主键字段 并且一般情况下都叫id字段

  所以当不定义主键字段的时候 orm会自动创建一个名为id主键字段

  也就意味着   在创建模型表的时候如果主键字段名没有额外的叫法 那么主键字段可以省略不写

字段

  1、AutoField

    自增的整型字段,必填参数primary_key=True,则成为数据库的主键。无该字段时,django自动创建。

    一个model不能有两个AutoField字段。

  2、IntegerField

    一个整数类型。数值的范围是 -2147483648 ~ 2147483647。

    最多存放10位数字,因此不能用该字段存储手机号

  3、CharField

    字符类型,必须提供max_length参数。max_length表示字符的长度。

  4、DateField

    日期类型,日期格式为YYYY-MM-DD,相当于Python中的datetime.date的实例。

    参数:

        auto_now:新增时自动设置当前时间,每次修改时会更新当前日期时间

        auto_now_add:新创建对象时自动添加当前日期时间,修改时不会更新当前日期时间

    auto_now和auto_now_add和default参数是互斥的,不能同时设置。

  5、DatetimeField

    日期时间字段,格式为YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于Python中的datetime.datetime的实例。

  

  6、AutoField(Field)
    - int自增列,必须填入参数 primary_key=True

  7、BigAutoField(AutoField)
    - bigint自增列,必须填入参数 primary_key=True

    注:当model中如果没有自增列,则自动会创建一个列名为id的列
      from django.db import models

      class UserInfo(models.Model):
      # 自动创建一个列名为id的且为自增的整数列
      username = models.CharField(max_length=32)

      

      class Group(models.Model):
      # 自定义自增列
      nid = models.AutoField(primary_key=True)
      name = models.CharField(max_length=32)

  8、SmallIntegerField(IntegerField):
    - 小整数 -32768 ~ 32767

  9、PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
    - 正小整数 0 ~ 32767

  10、IntegerField(Field)
    - 整数列(有符号的) -2147483648 ~ 2147483647

  11、PositiveIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
    - 正整数 0 ~ 2147483647

  12、BigIntegerField(IntegerField):
    - 长整型(有符号的) -9223372036854775808 ~ 9223372036854775807

  13、BooleanField(Field)
    - 布尔值类型

  14、NullBooleanField(Field):
    - 可以为空的布尔值

  15、CharField(Field)
    - 字符类型
    - 必须提供max_length参数, max_length表示字符长度

  16、TextField(Field)
    - 文本类型

  17、EmailField(CharField):
    - 字符串类型,Django Admin以及ModelForm中提供验证机制

  18、IPAddressField(Field)
    - 字符串类型,Django Admin以及ModelForm中提供验证 IPV4 机制

  19、GenericIPAddressField(Field)
    - 字符串类型,Django Admin以及ModelForm中提供验证 Ipv4和Ipv6
    - 参数:
    protocol,用于指定Ipv4或Ipv6, 'both',"ipv4","ipv6"
    unpack_ipv4, 如果指定为True,则输入::ffff:192.0.2.1时候,可解析为192.0.2.1,开启此功能,需要protocol="both"

  20、URLField(CharField)
    - 字符串类型,Django Admin以及ModelForm中提供验证 URL

  21、SlugField(CharField)
    - 字符串类型,Django Admin以及ModelForm中提供验证支持 字母、数字、下划线、连接符(减号)

  22、CommaSeparatedIntegerField(CharField)
    - 字符串类型,格式必须为逗号分割的数字

  23、UUIDField(Field)
    - 字符串类型,Django Admin以及ModelForm中提供对UUID格式的验证

  24、FilePathField(Field)
    - 字符串,Django Admin以及ModelForm中提供读取文件夹下文件的功能
    - 参数:
      path, 文件夹路径
      match=None, 正则匹配
      recursive=False, 递归下面的文件夹
      allow_files=True, 允许文件
      allow_folders=False, 允许文件夹

  25、FileField(Field)
    - 字符串,路径保存在数据库,文件上传到指定目录
    - 参数:
      upload_to = "" 上传文件的保存路径
      storage = None 存储组件,默认django.core.files.storage.FileSystemStorage

  26、ImageField(FileField)

    - 字符串,路径保存在数据库,文件上传到指定目录
    - 参数:
      upload_to = "" 上传文件的保存路径
      storage = None 存储组件,默认django.core.files.storage.FileSystemStorage
      width_field=None, 上传图片的高度保存的数据库字段名(字符串)
      height_field=None 上传图片的宽度保存的数据库字段名(字符串)

  27、DateTimeField(DateField)
    - 日期+时间格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]

  28、DateField(DateTimeCheckMixin, Field)
    - 日期格式 YYYY-MM-DD

  29、TimeField(DateTimeCheckMixin, Field)
    - 时间格式 HH:MM[:ss[.uuuuuu]]

  30、FloatField(Field)
    - 浮点型

自定义一个char类型字段

class MyCharField(models.Field):

    """
    自定义的char类型的字段类
    """
    def __init__(self, max_length, *args, **kwargs):
        self.max_length = max_length
        super(MyCharField, self).__init__(max_length=max_length, *args, **kwargs)
 
    def db_type(self, connection):
        """
        限定生成数据库表的字段类型为char,长度为max_length指定的值
        """
        return 'char(%s)' % self.max_length
 
使用自定义字段:
class Class(models.Model):

    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=25)
    # 使用自定义的char类型的字段
    cname = MyCharField(max_length=25)
 
 

字段参数

  null:数据库中字段是否可用为空
  blank:用户输入是够可用空
    null和blank需要一定设置,如果blank为True,null为False,插入数据会出错
  db_column:显示在数据库中的字段列名
  primary_key:字段的主键值
  default:该字段的默认值(没有设置该字段时,就使用默认值)
  db_index:该字段是否建立索引
  unique:字段的唯一索引
  unique_for_date:字段中的日期部分的唯一索引
  unique_for_month:字段中的月部分的唯一索引
  unique_for_year:字段中的年部分的唯一索引
 
  verbose_name:字段在admin界面中显示的名称
  editable:字段在admin界面中是否可用编辑
  help_text:字段在admin界面中的提示信息
  choices:字段的值必须在choices列表中选择
    choices=[(0,"零"),(1,"一")]
    元组的第一个数据是存放在数据库的
          第二个数据是显示在admin界面中的
  error_messages:自定义错误信息(字典类型)
  validators:自定义错误验证(列表类型)
 
  具体见官网
 

模型类的Meta

  class Meta:

        # 数据库中生成的表名称 默认 app名称 + 下划线 + 类名
        db_table = "table_name"   # 将数据库中的表名修改成自定义的名称
 
        # admin界面中中显示的表名称
        verbose_name = '个人信息'
 
        # verbose_name加s
        verbose_name_plural = '所有用户信息'
 
        # 联合索引 
        index_together = [
            ("pub_date""deadline"),   # 应为两个存在的字段
        ]
 
        # 联合唯一索引
        unique_together = (("driver""restaurant"),)   # 应为两个存在的字段

  还有数据库的排序顺序等,具体见官网

 

 

django—模型相关的更多相关文章

  1. django模型相关的知识点

    定义属性 概述: django根据属性的类型确定以下信息 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django会为表增加自动增长的主键列,每个模 ...

  2. django模型中有外键关系的表删除相关设置

    0904自我总结 django模型中有外键关系的表删除相关设置 一.一对一 例如有Author.AuthorDetail两表 author = models.OneToOneField(to='Aut ...

  3. Django模型-数据库操作

    前言 前边记录的URLconf和Django模板全都是介绍页面展示的东西,也就是表现层的内容.由于Python先天具备简单而强大的数据库查询执行方法,Django 非常适合开发数据库驱动网站. 这篇开 ...

  4. django模型——数据库(二)

    模型--数据库(二) 实验简介 模型的一些基本操作,save方法用于把对象写入到数据库,objects是模型的管理器,可以使用它的delete.filter.all.order_by和update等函 ...

  5. Django模型层(2)

    <!DOCTYPE html><html lang="zh-cn"><head><meta charset="utf-8&quo ...

  6. {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询

    Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...

  7. django模型中的关系对应

    显然,关系数据库的力量在于将表相互关联.Django提供了定义三种最常见的数据库关系类型的方法:多对一,多对多和一对一. 在说明之前,首先来理解一下这三个概念: 多对一: 两个集合a,b;集合a中的多 ...

  8. python3之Django模型(一)

    1.模型概述 模型是关于您的数据的唯一,明确的信息来源,它包含您正在存储的数据的重要字段和行为.通常,每个模型映射到单个数据库表. 每个模型都是一个子类的python类django.db.models ...

  9. Django 模型(数据库)

    Django 模型(数据库) )         email = models.EmailField()         memo = models.TextField()   def __unico ...

随机推荐

  1. archaius(1) 概述

    archaius作为配置管理工具,内部主要定义了下几个模块: 配置源 配置源的主要功能是将配置从目标位置加载到内存中.详见:archaius源码分析之配置源 配置管理器 配置管理器的主要功能是管理内存 ...

  2. redis命令执行复现

    攻击机:centos mini 192.168.205.130 靶机:centos 192.168.205.128 影响范围:Redis4.x.5.x 0x01 安装redis包 wget downl ...

  3. SQL Server通过创建临时表遍历更新数据

    前言: 前段时间新项目上线为了赶进度很多模块的功能都没有经过详细的测试导致了生成环境中的数据和实际数据对不上,因此需要自己手写一个数据库脚本来更新下之前的数据.(线上数据库用是SQL Server20 ...

  4. Kubernetes K8S之Ingress详解与示例

    K8S之Ingress概述与说明,并详解Ingress常用示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C ...

  5. JVM的整体结构

    整个jvm的运行流程图如上所示,首先需要进行加载class文件,然后使用类加载子系统将class翻译解析导入内存,在内存中分别导入到对应的运行时数据区,然后执行引擎开始执行,对于需要的数据在对应的区域 ...

  6. 单调队列优化O(N)建BST P1377 [TJOI2011]树的序

    洛谷 P1377 [TJOI2011]树的序 (单调队列优化建BST 链接 题意分析 本题思路很简单,根据题意,我们利用所给的Bst生成序将Bst建立起来,然后输出该BST的先序遍历即可: 但,如果我 ...

  7. Redis 作者 Antirez 与 Contributor Mattsta 之间关于 CRC 的 Battle

    大家好,我是 yes. 昨天表弟说有个学妹问他 Redis 为什么要用 CRC16(key) mod 16384 来计算 key 所处槽的位置,我想这 CRC 一般都是用来校验的,通过多项式转换成二进 ...

  8. git 一个可以提高开发效率的命令:cherry-pick

    各位码农朋友们一定有碰到过这样的情况:在develop分支上辛辛苦苦撸了一通代码后开发出功能模块A,B,C,这时老板过来说,年青人,我们现在先上线功能模块A,B.你一定心里一万只草泥马奔腾而过,但为了 ...

  9. mybatis里的mapper,@Mapper参数,Mapper.xml文件 sql语句Select+where语句

    提示:有不清楚的可以试着看一下我最后的连接,是跟这些内容相关的 Mapper文件,特殊符号: 转义符号 原符号 中文意思 &It; < 小于号 > > 大于号 & & ...

  10. _1_html_框架

    创:18_3_2017修:20_3_2017 什么是html? --超文本标记语言 --告诉浏览器内容的语义 html页面的框架是什么? <!DOCTYPE html> <!--DT ...