zoukankan      html  css  js  c++  java
  • Django项目的ORM操作之--数据模型类创建

    在django项目中,其自带了ORM(Object Relation Mapping)对象关系映射框架,我们在django项目下app的models模块下对类进行操作,通过ORM会将我们对类的操作转化为具体的数据库sql语句,继而实现对数据库的操作。

     

    1. 数据模型类的简单创建:

    在django项目下的app的models模块下:

      注意:实现orm映射的前提是创建的类必须继承自django.db包下的models模块的Model类。

    #  1.导入模块

    from django.db import models

    # 2.创建类,继承  --> 对应数据库操作是创建表,表名字为“app名+类名”, 名字自动全部转换为小写;

    # sql语句: create table book_app_bookinfo(字段信息);

    class BookInfo(models.Model):

      pass

      '''

      也可通过元选项自定义在数据库中创建的表名,意义不大。

      class Meta:

        db_table = 'my_tablename'

      '''

    # 3.设计好了数据模型的类,即相当于创建好了表。但是我们发现上面这张表设计的时候并没有设计表的字段,这显然是不对的,下面进行字段的设计

    class BookInfo(moels.Model):

      # 设计字段名为bname, 约束字段类型为char,最大长度为20

      bname = models.CharField(max_length=20)

      bisDelete = models.BooleanField(default=false)  # 逻辑删除,默认false

    # 4.模型类已经完成,再将models模块的内容进行迁移即可执行ORM转换的sql语句,对数据库进行对应操作

    在命令行下,进入当前django项目所在的(虚拟)环境,执行以下:

      $ django-admin mkmigrations      # 生产迁移文件(在django项目的app目录下的migrations目录下可看到生产了对应的迁移文件)

      $ django-admin migrate        # 执行迁移(即执行了对应的sql语句)

    查看数据库,可以看到当前的数据库中新增了一张表book_app_bookinfo,主键id我们并没有设计,会自动给我们设计好。

    2.数据模型类的映射关系:

      app名:book_app

      类名:BookInfo   -->表名:book_app_bookinfo

      类属性创建时的方法:CharField/BooleanField  -->字段属性: char/bool

      方法的参数选项:max_length/default  -->字段属性的约束选项

      [字段名] = models.[字段属性]([属性约束选项])

    3.常用字段属性:

      AutoField  -->自动增长的IntegerField,通常不指定,django会自动创建,auto_increment

      CharField  -->字符串类型,必须有(max_length=[xx])参数

      BooleanField  -->布尔类型,不能为空(default=[ture/false])

      DateField  -->日期类型,参数:auto_now:自动设置为最后一次修改的时间戳  auto_now_add:自动设置为第一次创建时的时间戳

      DateTimeField/TimeField  -->日期类型,参数同DateField

      SamllIntegerField  -->整数类型,对应tinyint/smallint/int/bigint

      Decimal  -->小数类型,必须指定整数位和小数位(例: (max_digits=None,decimal_places=None))

      BinaryField  -->二进制类型

      FloatField  -->浮点类型

      

    4.常用字段属性选项:

      primary_key  -->默认为False,True表示为主键,一般AutoField使用

      null  -->默认为False,True表示该字段可以为空(添加数据时该字段可以不设置)

      blank  -->默认为False,True表示添加数据时该字段的值可以为空值

      default  -->设置默认值

      max_length  -->最大长度

  • 相关阅读:
    SQL server 2005 创建数据库失败提示“Collation <服务器默认值> is not valid”解决方法
    ACM PKU 1011 Sticks 深度优先搜索
    pku1088 滑雪
    javascript 使用金山词霸网络翻译
    JQuery基础 document.ready
    遍历aspx页面中所有的指定控件
    DataTable,DataView和DataGrid中一些容易混淆的概念
    C#中的DBNull、Null、和String.Empty解释
    哈佛大学管训
    美国教育考试中心公布2010年托业考试时间表
  • 原文地址:https://www.cnblogs.com/leexl/p/7705507.html
Copyright © 2011-2022 走看看