配置数据库信息

  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. 测试必备:jmeter测试http协议接口的各种传参方式

    测试接口,postman和jmeter是用得最频繁的工具,特别是jmeter,支持很多种协议,且除了测功能,还能做自动化测试和性能测试.下面主要介绍jmeter测试http协议接口的用法,包含get, ...

  2. Python实现自动生成小学四则运算题目

    Github地址: https://github.com/guoyuyi/gyy.github.io/blob/%E4%BD%9C%E4%B8%9A1/zy1.py 题目描述: 通过python语言编 ...

  3. 并发编程(八)Lock锁

    一.引言 线程并发的过程中,肯定会设计到一个变量共享的概念,那么我们在多线程运行过程中,怎么保证每个先拿获取的变量信息都是最新且有序的呢?这一篇我们来专门学习一下Lock锁. 我们先来了解几个概念: ...

  4. Java11-ZGC

    Java 11包含一个全新的垃圾收集器--ZGC,它由Oracle开发,承诺在数TB的堆上具有非常低的暂停时间. 在本文中,我们将介绍开发新GC的动机,技术概述以及由ZGC开启的一些可能性. 那么为什 ...

  5. linux学习(四)Linux 文件基本属性

    一.引言 Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限. 为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定. 在Lin ...

  6. linux下Crontab定时任务

    1.命令格式 crontab [-u user] file crontab [-u user] [-e | -l | -r ] 2.命令参数 -u user:用来设定某个用户的crontab服务: f ...

  7. java工作三年应具备的技能

    LZ常常思考自己的未来,也从自己的思考中总结出了一些东西,作为第一部分来谈谈.LZ认为一名程序员应该有几个阶段(以下时间都算上实习期). 第一阶段:三年 我认为三年对于程序员来说是第一个门槛,这个阶段 ...

  8. spring cloud consul 服务治理

    对照系统安装响应consul文件(以window为例) 解压文件之后配置环境,进入Path添加文件所在目录, 测试:在文件所在目录下进入指令操作 输入 consul agent -dev 启动成功,在 ...

  9. Hibernate4.3 继承映射

    一.单表继承映射 父子类合成一张表 An_id An_name gender Weight Height type 1 dog 1 300 D 2 cat 1 100 C 在Animal.hbm.xm ...

  10. docker-创建容器常见选项

    1. docker run创建容器常见选项 1.1 创建容器 选项 描述 -i,-interactive 交互式 -t,-tty 分配一个伪终端 -d,-detach 运行容器到后台 -e,-env ...