zoukankan      html  css  js  c++  java
  • 《Django Web应用开发实战》学习笔记 14- Django模型-模型定义、数据迁移

    学习资料

    《Django Web应用开发实战》

    1. 模型与数据库

    Django对各种数据库提供了很好的支持,包括PostgreSQL、Mysql、SQLite和Orcle,并且为这些数据库提供了统一的API方法,这些API统称为ORM框架,通过内置的DjangoORM框架可以实现数据库连接和读写操作。

    2. 模型定义与数据迁移

    2.1 定义模型

    ORM框架是一种程序技术,用于实现面向对象编程语言中不同类型系统的数据之间的转换,它相当于创建了一个虚拟对象数据库,我们可以通过虚拟对想库的操作直接实现对目标数据库的操作,在Django中统称为模型。

    在index/models.py定义模型

    class PersonInfo(models.Model):
        """个人信息表"""
        # AutoField 自增, primary_key=True 定义为主键
        id = models.AutoField(primary_key=True)
        # CharField 字符类型, max_length 长度
        name = models.CharField(max_length=20)
        # IntegerField 数字类型
        age = models.IntegerField()
        # DateField 日期类型
        hireDate = models.DateField()
        
        def __str__(self):
            return self.name
        
        class Meta:
            verbose_name = '人员信息'
    

    django Model中常用类型字段

    类型 描述
    AutoField 自增长类型,字段类型为整数,长度为11
    CharField 字符类型
    BooleanField 布尔类型
    DateField 日期类型
    DateTimeField 日期时间(Datetime)类型
    Decimal 十进制小数类型
    EmailField 字符类型,存储邮箱格式的字符串
    FloatField 浮点数类型
    IntegerField 整数类型
    SlugField 字符类型,包含字母,数字,下划线和连字符
    TextField 长文本类型
    URLField 字符类型,存储路由格式的字符串
    BinaryField 二进制数据类型
    FileField 字符类型,存储文件路径的字符串
    ImageField 字符类型,存储图片路径的字符串

    每个模型字段的参数

    参数 描述
    verbose_name 默认为None,在Admin站点管理设置字段的显示名称
    primary_key 默认为False,若为True,则将字段设置为主键
    max_length 默认为None,设置字段最大长度
    unique 默认为False,若为True,则设置字段的唯一属性
    blank 默认为False,若为True,则字段可以为空值,数据库将存储空字符串
    null 默认为False,若为True,则字段可以为空值,数据库表现为NULL
    db_index 默认为False,若为True,则以此字段创建索引
    default 默认为NOT_PROVIDED对象,设置字段的默认值
    editable 默认为True,允许字段可编辑,用于设置Admin的新增数据的字段
    serialize 默认为True,允许字段序列化,可将数据转为json格式
    choice 默认为空列表,设置字段的可选值
    help_text 默认为空字符串,设置表单的提示信息
    db_column 默认为None,设置数据表的列名称,默认将字段名作为表列名
    db_tablespace 默认为None,
    auto_created 默认为False,为True自动创建字段用于1对1模型中
    validators 默认为空列表,设置字段内容的验证函数
    error_message 默认为None,设置错误提示

    重写__str__

    在定义模型时,一般会重写__str_函数,这是设置模型的返回值,默认情况下返回值为模型名+主键,该函数可用于外键查询,比如模型A设有外键F,外键字段F与模型B有关联,当查询模型A时,外键字段F会将模型B的函数__str__返回值作为字段内容

    注意:该函数只支持返回str类型,其他类型需要使用str()转换成字符类型

    模型中Meta的属性

    属性 描述
    abstract 设置为True,抽象模型,不会在数据库中建表
    app_label 属性值为字符串,将模型设置为指定项目应用
    db_table 设置数据库表名,字符串类型
    ordering 属性值为列表。将模型以某个字段排序
    permissions 属性值元组,设置模型的访问权限
    indexs 属性值为列表,定义数据表的索引列表
    verbose_name 属性值字符串,设置模型直观可读的名称并以复数的形式展示
    verbose_name_plural 属性值字符串,设置模型直观可读的名称并以单数的形式展示
    label 只读属性

    2.2 数据迁移

    # 第一步 生成迁移文件
    python manage.py makemigrations
    # 第二步 向数据库中写入表
    python manage.py migrate
    

    在项目开发过程中如果修改了模型内容,可直接按上述步骤执行命令重新生成数据

    数据导入、导出

    • 导出:

      # 将项目数据表中的数据导出到data.json文件
      python manage.py dumpdata>data.json
      
    • 导入:

      # 将数据导入到项目数据表中
      python manage.py loaddata data.json
      
  • 相关阅读:
    [翻译] GoogleMaterialDesignIcons
    [翻译] InstagramPhotoPicker
    UIButton的resizableImageWithCapInsets使用解析
    [翻译] RAReorderableLayout
    [翻译] ZLSwipeableView
    【转】php利用mkdir创建多级目录
    【转】用 PHP 内置函数 file_put_contents 写入文件
    【转】PHP 之 CURL 模拟登陆并获取数据
    【转】php curl 伪造IP来源的实例代码
    【转】POP3、SMTP和IMAP之间的区别和联系
  • 原文地址:https://www.cnblogs.com/zy7y/p/14039276.html
Copyright © 2011-2022 走看看