当前位置: 首页 > news >正文

常州营销型网站建设青岛市房产信息网官网

常州营销型网站建设,青岛市房产信息网官网,工作台,网站改版需要注意文章目录 1、Django 模型简介2、Django 中创建并使用模型(1)新加一个名为 myapp 的应用(2)定义模型类(2)激活模型类(3)创建数据库迁移文件(4)应用迁移文件 3、…

文章目录

      • 1、Django 模型简介
      • 2、Django 中创建并使用模型
        • (1)新加一个名为 myapp 的应用
        • (2)定义模型类
        • (2)激活模型类
        • (3)创建数据库迁移文件
        • (4)应用迁移文件
      • 3、验证数据库是否生成了`myapp_personinfo`表
      • 4、疑问一:为什么创建出来的表是`myapp_personinfo`而不是`PersonInfo`或其他情况呢?
      • 5、疑问二、为什么查询出来的表结构多出了一个`id`列呢?

1、Django 模型简介

在Django框架中,模型(Model)用于与数据库进行交互,实现ORM(对象关系映射)。

Django的ORM系统支持多种数据库,包括PostgreSQL、SQLite、MySQL、MariaDB和Oracle,为不同数据库提供了统一的API接口。模型**通常(有特例)**映射到数据库中的一张表,模型字段对应表的列,并在业务逻辑层与数据库之间构建桥梁。

Django将数据库配置集中在settings.py中,而models.py文件则仅关注业务逻辑,使得模型代码更加简洁且与数据库类型解耦。Django模型的每个类继承自django.db.models.Model,其属性对应数据库字段。

通过Django ORM,开发者可以将Python中的对象映射并持久化到数据库中,从而方便地管理数据。

2、Django 中创建并使用模型

前言:这里我们使用django默认支持的SQLite 数据库,无需配置setting.py 即可直接使用。

(1)新加一个名为 myapp 的应用
  • 在命令行运行如下命令

    python manage.py startapp myapp
    
  • django 默认已经在myapp目录下给你创建了models.py文件,如图:

    在这里插入图片描述

(2)定义模型类
  • 操作:在应用的models.py文件中定义模型类(如PersonInfo),并继承models.Model

  • 示例:

    from django.db import modelsclass PersonInfo(models.Model):name = models.CharField(max_length=50)gender = models.CharField(max_length=10)age = models.IntegerField()
    
  • 说明PersonInfo模型类包含name(姓名)、gender(性别)和age(年龄)三个字段,分别使用CharFieldIntegerField定义。

(2)激活模型类
  • 在项目的settings.py文件中,找到INSTALLED_APPS配置项,添加模型所在的应用(myapp),以激活myapp/models.py文件内的模型类

  • 示例:

    INSTALLED_APPS = [...,'myapp',
    ]
    
(3)创建数据库迁移文件
  • 在命令行中运行以下命令来生成迁移文件

    python manage.py makemigrations
    
  • 说明:此步骤会生成用于创建数据库表的迁移文件,放置在应用名/migrations目录下,这里是myapp/migrations:如图:

在这里插入图片描述

(4)应用迁移文件
  • 在命令行中运行如下命令,将迁移文件应用到数据库,将创建/更新数据库中的表

    python manage.py migrate
    
  • 说明:这一步会在数据库中生成myapp_personinfo表。

这四个步骤完成后,Django模型已成功定义并在数据库中生成相应的表,可以通过Django ORM进行数据操作。

3、验证数据库是否生成了myapp_personinfo

前言:python manage.py migrate该命令执行后,项目根路径下的db.sqlite3文件将更新;

  • 命令行输入以下命令进入 SQLite 控制台:

    sqlite3 db.sqlite3
    
  • 使用下列 任意命令之一查询当前数据库的所有表信息:

    -- 方式一
    .tables
    -- 方式二
    SELECT name FROM sqlite_master WHERE type='table'; 
    

    结果如图:

在这里插入图片描述

  • 验证新建表myapp_personinfo的表结构,运行下列sql语句

    PRAGMA table_info(myapp_personinfo);
    

    结果如图:

在这里插入图片描述

4、疑问一:为什么创建出来的表是myapp_personinfo而不是PersonInfo或其他情况呢?

在 Django 中,表的名称通常是根据应用名称和模型名称自动生成的,以确保命名唯一性,避免不同应用中的模型名称冲突

(1)命名规则

Django 默认使用以下规则创建表名:

<应用名称>_<模型名称小写>

因此,如果模型 PersonInfo 定义在应用 myapp 中,那么 Django 会将表名生成为 myapp_personinfo。这种命名方式有助于组织数据库表,避免命名冲突。

(2)自定义表名

如果不想使用默认的命名规则,可以在模型的 Meta 类中指定 db_table 属性来自定义表名:

from django.db import modelsclass PersonInfo(models.Model):name = models.CharField(max_length=50)gender = models.CharField(max_length=10)age = models.IntegerField()class Meta:db_table = 'person_info'  # 自定义表名

这样,Django 会在数据库中创建 person_info 表,而不是默认的 myapp_personinfo

后续会讲到**Meta**相关内容,敬请期待。。

5、疑问二、为什么查询出来的表结构多出了一个id列呢?

如果没有手动定义主键,Django 会自动在模型中添加一个 id 字段,它是一个自增的整数列,用于唯一标识每一行记录,以方便Django进行数据库操作。

当然通过自定义主键字段,可以去掉这个自动生成的 id 列,但一般建议使用Django生成的默认主键!!

  • 自定义主键字段:如果不想使用自动生成的 id,可以在模型中定义自己的主键字段。比如:

    from django.db import modelsclass PersonInfo(models.Model):person_id = models.CharField(max_length=10, primary_key=True)  # 自定义主键name = models.CharField(max_length=50)gender = models.CharField(max_length=10)age = models.IntegerField()
    

    这样定义后,id 列将不会再自动添加,person_id 将作为主键使用。

http://www.yayakq.cn/news/222376/

相关文章:

  • 顶呱呱网站建设深圳南头网站建设公司
  • 东台网站制作东莞网站建设排行
  • 万网网站模板网络营销就业方向和前景
  • 做的网站怎么打开是白板网站建设费用的请示
  • 做pc端网站机构定制级高端网站建设
  • 网站不备案 能打开吗wordpress目录图片
  • 校园二级网站建设评比自评做网站备案需要什么特殊材料
  • 电脑在局域网做网站网站优化找谁
  • 高端上海网站设计公司朝阳区搜索优化seosem
  • 网站建设立项说明书网站关键词设置多少个
  • 网站title写法地方门户网站的分类
  • 前端做用vue做后台多还是做网站多包头建设厅官方网站
  • 广东企业网站建设多少钱企业内部网站设计
  • 域名购买后如何建设网站游戏类网站欣赏
  • 爱站网seo工具企业做网站优点
  • 创建网站投资多少女生做网站开发
  • 宝安大型商城网站建设小说网页制作步骤
  • 网站备案喷绘php做的网站怎么打开
  • 有个专门做dnf游戏币的网站外贸邮箱用哪个比较好
  • 湖北省住房城乡建设厅网站查泉州专业网站设计技术公司
  • 建立门户网站网站主题和建设
  • 网站建设咨询公司wordpress内容修改
  • 女人网上量体做衣网站网页编辑软件都有哪些
  • 珠海网站建设培训学校网站规划建设与安全管理
  • 经典 网站做门户网站的市场价格
  • 做网站前景东莞推广系统平台
  • 忻州建设公司网站施工企业跨专业接工作是否有效
  • 眉山网站开发91永久免费海外地域网名
  • 旅游电子商务网站有哪些用服务器ip做网站域名
  • 模板网站建设套餐彩票网站建设制作价格