Django中的ORM模型

ORM模型基础:模型介绍和配置;常见的字段类型(文本,数字,日期等);模型同步;模型的元数据;外键关联,复合类型

一,模型介绍及配置

1.掌握Django中ORM的配置

  • 项目配置 (setting.py)
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'mydatabase',
            'USER': 'mydatabaseuser',
            'PASSWORD': 'mypassword',
            'HOST': '127.0.0.1',
            'PORT': '5432',
        }
    }
  • 安装依赖

二,常见的ORM字段类型

1.了解ORM中常见的字段类型

文本: 

  • CharField,TextField —— 字符串,文本
  • FileField,ImageField —— 文件,图片
  • FilePathField —— 文件路径
  • EmailField —— 邮件地址
  • URLField —— URL地址

 数字:

  • IntegerField —— 整数
  • SmallIntegerField —— 整数
  • BigIntegerField —— 整数
  • BooleanField —— 布尔值(1,0)
  • Float Field,DecimalField —— 小数

日期:

  • DateField —— 日期
  • TimeField —— 时间
  • DateTimeField —— 日期时间 

特殊类型:

  • OneToOneField —— 一对一关联
  • ForeignKey —— 外键关联
  • ManyToManyField —— 多对多关联
  • GenericForeignKey —— 复合关联 

 模型基类:

        django.db.models.Field

2.掌握ORM中字段类型的配置选项

  • 每个类型都有可选参数,部分类型有必传参数
  • 参数传递是无序的(需要写参数的名称)
  • 一般情况下,第一个参数不指定名称
  • null,blank —— 是否为Null,空值
  •  verbose_name 大多数模型的第一个参数,特殊类型除外    作用:方便阅读,即:该字段的含义
  • default —— 不填写改字段时的默认值
  • primary_key,unique —— 主键,唯一索引
  • db_column —— 数据库表中对应字段名称
  • help_text —— 帮助文字
  • choices —— 可供选择的选项,如:性别的选项
  • get_FOO_display() —— 展示choices对应的值

3.了解常用字段类型中的参数传递

CharField

  • max_length —— 最大长度(必传)
  • 相关类型:EmailField,URLField

DateTimeField 

  • auto_now —— 更新时间为记录更改的时间(非必传)
  • auto_now_add —— 记录创建的时间(非必传)

三,模型的创建

1.掌握模型设计的技巧

2.掌握ORM模型代码的编写

3.掌握常见ORM模型字段类型的使用

manage.py startapp accounts


models.py
from django.db import models


# Create your models here.

class User(models.Model):
    """ 用户模型 """
    name = models.CharField('姓名', max_length=64)
    sex = models.CharField('性别', max_length=1, choices=(
        ('1', '男'),
        ('0', '女')
    ), default='1')
    age = models.PositiveIntegerField('年龄', default=0)
    username = models.CharField('用户名', max_length=64, unique=True)
    password = models.CharField('密码', max_length=256)
    remark = models.CharField('备注信息', max_length=64, null=True, blank=True)
    created_at = models.DateTimeField('创建时间', auto_now_add=True)
    update_at = models.DateTimeField('修改时间', auto_now=True)

四,模型同步migrate

  • python manage.py check
  • python manage.py makemigrations
  • python manage.py migrate

五,模型的元数据

1.掌握Django中元编程的技巧

.元数据的描述:在Python模型中再写一个类,使用Meta类来表示;是对模型的补充说明

class Meta:
    verbose_name = '用户基础信息'
    verbose_name_plural = '用户基础信息'
    db_table = 'oauth_user'
  • db_table —— 模型映射的数据库表的名称
  • ordering —— 指定数据表的默认排序规则
  • verbose_name —— 供编程查看的名称字段,同时也是给django自带后台管理模块命名中文
  • abstract —— 抽象类 抽象类不会生成对应的数据库表

.proxy代理类:有功能代理上面类中所,且可以对它的功能进行扩充,相当于继承

class Manager(User):
    class Meta:
        proxy = True

    def xxx(self):
        pass

2.掌握在模型中配置数据库的表名称

3.掌握抽象选项的作用及使用场景

4.了解代理选项的作用及应用场景

六,外键关联模型

1.了解数据库中常见关联关系

  • 一对一
  • 一对多
  • 一对多

2.掌握一对一关系的实现 

  • OneToOneField(to, on_delete,parent_link=False, **options)

举例:用户信息进行分表

        用户基本信息 <-- 用户详细信息 

3.掌握一对多关系的实现

  • ForeignKey(to, on_delete, **options)

举例:用户提问,问题表加上ForeignKey

        用户(1) <-- 问题(n)

4.掌握多对多关系的实现

  • ManyToManyField(to, **options)
  • 举例:收藏问题

        用户(n) ---- 问题(n) 

5.类型的参数选项

  1. to----关联的模型 (必传)
  • 模型类
  • 模型类(字符串) 
  • self(外键关联关联到自己的情况下) 
  1. on_delete ----- 删除选项(必传递) 
  • CASCADE:关联删除
  • PROTECT:受保护,不允许被删除
  • SET_NULL:设置为None,需要添加选项null=True
  • SET_DEFAULT:设置为默认值,需要添加选项default 
  • SET():传参设置值
  • DO_NOTHING:什么也不做
  1. related_name:是否需要反向引用,反向引用的名称
  2. related_query_name:反向引用的名称 

六,复合类型(django特有)

1.理解复合类型的使用场景

思考:景点评论,订单评论,旅游攻略评论如何设计ORM模型精简又便于维护

这至少要4个表,如果再加旅游攻略的评价,又要多两个表 

2.掌握复合类型的模型设计

  • ContentType——类容模型
  • ForeignKey(ContentType)——关联符合模型
  • GenericForeignKey——关联模型
  • GenericRelation——反向关联

3.了解复合类型设计原理 

  • 关键点:ContentType

七,章节总结

  • ORM模型分析,设计
  • ORM模型代码的编写,模型同步
  • ORM外键关联,复合类型
  • 数据库配置 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值