前提条件

Django3创建项目及应用

查看所使用的数据库

打开test01/settings.py,查看使用的是sqlite3

DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'),}
}

创建模型(ORM框架)

1、编辑user/models.py文件

from django.db import models
# 用户类
class YongHu(models.Model):# CharField字符字段、max_length字符串的最大长度user_name = models.CharField(max_length=50)# DateTimeField日期时间字段pub_date = models.DateTimeField()

2、生成迁移文件

(py_huanjing01) [root@WzcWyt test01]# python manage.py makemigrations user
Migrations for 'user':user\migrations\0001_initial.py- Create model YongHu(py_huanjing01) [root@WzcWyt test01]#

生成一个文件

3、查看人类可读的sql(可以不做)

(py_huanjing01) [root@WzcWyt test01]# python manage.py sqlmigrate user 0001
BEGIN;
--
-- Create model YongHu
--
CREATE TABLE "user_yonghu" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "user_name" varchar(50) NOT NULL, "pub_date" datetime NOT NULL);
COMMIT;(py_huanjing01) [root@WzcWyt test01]#

4、执行迁移

(py_huanjing01) [root@WzcWyt test01]# python manage.py migrate
Operations to perform:Apply all migrations: admin, auth, contenttypes, sessions, user
Running migrations:Applying contenttypes.0001_initial... OKApplying auth.0001_initial... OKApplying admin.0001_initial... OKApplying admin.0002_logentry_remove_auto_add... OKApplying admin.0003_logentry_add_action_flag_choices... OKApplying contenttypes.0002_remove_content_type_name... OKApplying auth.0002_alter_permission_name_max_length... OKApplying auth.0003_alter_user_email_max_length... OKApplying auth.0004_alter_user_username_opts... OKApplying auth.0005_alter_user_last_login_null... OKApplying auth.0006_require_contenttypes_0002... OKApplying auth.0007_alter_validators_add_error_messages... OKApplying auth.0008_alter_user_username_max_length... OKApplying auth.0009_alter_user_last_name_max_length... OKApplying auth.0010_alter_group_name_max_length... OKApplying auth.0011_update_proxy_permissions... OKApplying sessions.0001_initial... OKApplying user.0001_initial... OK(py_huanjing01) [root@WzcWyt test01]# 

5、进入test01项目目录查看db.sqlite3数据库,查看新创建的user_yonghu(应用名_类名)表

# 进入指定数据库
(py_huanjing01) [root@WzcWyt test01]# sqlite3 db.sqlite3# 查看所有表
sqlite> .tables
auth_group                  django_admin_log
auth_group_permissions      django_content_type
auth_permission             django_migrations
auth_user                   django_session
auth_user_groups            user_yonghu
auth_user_user_permissions# 查看表结构
sqlite> .schema user_yonghu
CREATE TABLE "user_yonghu" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "user_name" varchar(50) NOT NULL, "pub_date" datetime NOT NULL);# 退出sqlite3
sqlite>.quit(py_huanjing01) [root@WzcWyt test01]# 

6、给数据库表添加数据

(py_huanjing01) [root@WzcWyt test01]# python manage.py shell
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from user.models import YongHu
>>> from django.utils import timezone# 保存数据
>>> u = YongHu()
>>> u.user_name = 'xiaohong'
>>> u.pub_date = timezone.now()
>>> u.save()# 查询数据
>>> b2 = YongHu.objects.get(id=1)
>>> type(b2)
<class 'user.models.YongHu'>
>>> b2.user_name
'xiaohong'
>>> b2.pub_date
datetime.datetime(2021, 5, 12, 6, 30, 31, 352358, tzinfo=<UTC>)
>>> b2.id
1# 修改时间
>>> b2.pub_date = timezone.now()
>>> b2.save()# 删除数据
>>> b2.delete()
(1, {'user.YongHu': 1})# 退出
>>> quit()(py_huanjing01) [root@WzcWyt test01]#

查看sqlite3数据库命令

(py_huanjing01) [root@WzcWyt test01]# sqlite3 db.sqlite3
SQLite version 3.8.6 2014-08-15 11:46:33
Enter ".help" for usage hints.# 查询
sqlite> select * from user_yonghu;
1|xiaohong|2021-05-12 02:54:08.156357# 退出sqlite3
sqlite>.quit

一对多表

1、修改user/models.py

from django.db import models# 用户类
class YongHu(models.Model):# CharField字符字段、max_length字符串的最大长度user_name = models.CharField(max_length=50)# DateTimeField日期时间字段pub_date = models.DateTimeField()# 新增部分================================================
# 角色类
class JueSe(models.Model):# 建立一对多关系yong_hu = models.ForeignKey(YongHu, on_delete=models.CASCADE)# 角色名称role_name = models.CharField(max_length=50)# 行别:True男,False女xing_bie = models.BooleanField(default=True)# 是否删除0正常1删除role_del = models.IntegerField(default=0)

2、生成迁移文件

(py_huanjing01) [root@WzcWyt test01]# python manage.py makemigrations user
Migrations for 'user':user\migrations\0002_juese.py- Create model JueSe(py_huanjing01) [root@WzcWyt test01]#

查看生成的文件

3、执行迁移

(py_huanjing01) [root@WzcWyt test01]# python manage.py migrate
Operations to perform:Apply all migrations: admin, auth, contenttypes, sessions, user
Running migrations:Applying user.0002_juese... OK(py_huanjing01) [root@WzcWyt test01]#

4、进入test01项目目录查看db.sqlite3数据库,查看新创建的user_juese(应用名_类名)表

# 进入指定数据库
(py_huanjing01) [root@WzcWyt test01]# sqlite3 db.sqlite3# 查看所有表
sqlite> .tables
auth_group                  django_admin_log
auth_group_permissions      django_content_type
auth_permission             django_migrations
auth_user                   django_session
auth_user_groups            user_juese
auth_user_user_permissions  user_yonghu# 查看表结构
sqlite> .schema user_juese
CREATE TABLE "user_juese" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "role_name" varchar(50) NOT NULL, "xing_bie" bool NOT NULL, "role_del" integer NOT NULL, "yong_hu_id" integer NOT NULL REFERENCES "user_yonghu" ("id") DEFERRABLE INITIALLY DEFERRED);
CREATE INDEX "user_juese_yong_hu_id_de4ae717" ON "user_juese" ("yong_hu_id");# 退出sqlite3
sqlite>.quit(py_huanjing01) [root@WzcWyt test01]# 

5、给数据库表添加数据

(py_huanjing01) [root@WzcWyt test01]# python manage.py shell
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from user.models import YongHu,JueSe
>>> from django.utils import timezone# 保存数据
>>> u = YongHu()
>>> u.user_name = 'TaoGe'
>>> u.pub_date = timezone.now()
>>> u.save()
>>> r = JueSe()
>>> r.role_name = '老师'
>>> r.xingbie = True
>>> r.role_del = 0
>>> r.yong_hu = u
>>> r.save()
>>> r2 = JueSe()
>>> r2.role_name = 'nanLaoShi'
>>> r2.yong_hu = u
>>> r2.save()# 查询数据
>>> r3 = JueSe.objects.get(id=1)
>>> r3.role_name
'老师'
>>> r3.xing_bie
True
>>> r3.role_del
0
>>> r3.yong_hu
<YongHu: YongHu object (2)>
>>> r3.yong_hu.user_name
'TaoGe'

# 由一查多,注意:是(多的类名小写_set)========================
>>> u.juese_set.all()
<QuerySet [<JueSe: 老师>, <JueSe: nanLaoShi>]># 由多查一,注意:是(多内一的对象)========================
>>> j.yong_hu
<YongHu: TaoGe># 退出
>>> quit()(py_huanjing01) [root@WzcWyt test01]#

查看sqlite3数据库命令

(py_huanjing01) [root@WzcWyt test01]# sqlite3 db.sqlite3# 查询
sqlite> select * from user_yonghu;
2|TaoGe|2021-05-12 06:38:32.277338
sqlite> select * from user_juese;
1|老师|1|0|2
2|nanLaoShi|1|0|2# 退出sqlite3
sqlite>.quit

Django 管理页面

创建一个管理员账号
首先,我们得创建一个能登录管理页面的用户。请运行下面的命令:

$ python manage.py createsuperuser

键入你想要使用的用户名,然后按下回车键:

Username: admin

然后提示你输入想要使用的邮件地址:

Email address: admin@example.com

最后一步是输入密码。你会被要求输入两次密码,第二次的目的是为了确认第一次输入的确实是你想要的密码。

Password: **********
Password (again): *********
Superuser created successfully.

启动开发服务器
Django 的管理界面默认就是启用的。让我们启动开发服务器,看看它到底是什么样的。

如果开发服务器未启动,用以下命令启动它:

$ python manage.py runserver

现在,打开浏览器,转到你本地域名的 “/admin/” 目录, – 比如 “http://127.0.0.1:8000/admin/” 。你应该会看见管理员登录界面:

注意:如果是英文,需修改test01/settings.py文件

# LANGUAGE_CODE = 'en-us'
# TIME_ZONE = 'UTC'# 本地化
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

注册模型类

应用user/admin.py

from django.contrib import admin
from user.models import YongHu, JueSe# 注册模型类
admin.site.register(YongHu)
admin.site.register(JueSe)

在user/models.py添加def str(self):

from django.db import models# 用户类
class YongHu(models.Model):# CharField字符字段、max_length字符串的最大长度user_name = models.CharField(max_length=50)# DateTimeField日期时间字段pub_date = models.DateTimeField()def __str__(self):# 返回姓名return self.user_name# 角色类
class JueSe(models.Model):# 建立一对多关系yong_hu = models.ForeignKey(YongHu, on_delete=models.CASCADE)# 角色名称role_name = models.CharField(max_length=50)# 行别:True男,False女xing_bie = models.BooleanField(default=True)# 是否删除0正常1删除role_del = models.IntegerField(default=0)def __str__(self):# 返回角色名return self.role_name


注意:正常不会这么写,会用下面一种方式

新增、修改、删除均可操作

显示表内列名

修改user/admin.py

from django.contrib import admin
from user.models import YongHu, JueSeclass YongHuAdmin(admin.ModelAdmin):list_display = ['id', 'user_name', 'pub_date']class JueSeAdmin(admin.ModelAdmin):list_display = ['id', 'role_name', 'xing_bie', 'role_del', 'yong_hu']# 注册模型类
admin.site.register(YongHu, YongHuAdmin)
admin.site.register(JueSe, JueSeAdmin)


Django3创建数据库表模型及 Django 管理页面相关推荐

  1. 【超详细Django网站开发过程2】便利店管理系统之——创建数据库→定义数据库表→创建数据库表

    假装自己拥有一家小便利店,名叫--7-Twelve,我希望制作一个便利店管理系统对我的顾客.销售人员.货物等数据进行管理,先不管前端,后端总免不了对数据的一顿操作,那如何在Django中对数据库进行增 ...

  2. MySQL(一)——安装、创建数据库表、DML语言

    文章目录 1. 简述 2. 安装教程 3. 操作数据库 3.1 操作数据库的基本命令 3.2 数据库的列类型 3.3 数据库的字段属性(重点) 3.4 创建数据库表(重点) 3.5 数据表的类型 3. ...

  3. 数据库设计:pd工程创建数据库表

    数据库建模 了解了数据的设计思想,那对于数据库表的表设计应该怎么做呢?答案是数据库建模数 数据库建模:在设计数据库时,对现实世界进行分析.抽象.并从中找出内在联系,进而确定数据库的结构.它主要包括两部 ...

  4. mysql中下列关于创建_在 MySQL 中,下列关于创建数据库表的描述正确的是( )。_学小易找答案...

    [单选题]在表中设置外键实现的是哪一类数据完整性( ) [单选题]以下为概念模型的是() [论述题]• 参照 < 中国图书馆分类法 > ,谈一下你对自己所学专业在整个科学知识领域中所在的位 ...

  5. python代码创建数据库_如何使用python ORM创建数据库表?

    首先同大家说了语言的全方面知识,基本上各个位置点都有涉及,不知道大家有没有学到知识点呢?小编还是习惯跟大家说个总结,这样大家才能抓住重点,今天继续来学习下关于Django框架中ORM的使用,主要的作用 ...

  6. java 轻量数据库_DBTree是一个springboot2 + vue-element-template实现的轻量数据库表结构查看及管理工具...

    DBTree简介 DBTree是一个WEB版的轻量数据库表结构查看及管理工具,相比phpMyAdmin, DBTree只专注于方便开发查看表结构信息和 注释维护.通过树形展示库表结构,可以对表进行自定 ...

  7. oracle sqlplus建用户,Oracle用SQL Plus创建数据库表空间和用户

    1. 在电脑左下角点击"开始",然后输入"sql plus",选择运行sql plus程序(登录身份:指登录时的Role指定,oracle11g中分SYSDBA ...

  8. Android Studio 使用SQLite数据库来创建数据库+创建数据库表+更新表再次往表添加字段

    目录 一.前言 二.SQLite数据库介绍 1.什么是SQLite数据库 2.特点 3.SQLite 操作API 4.SQLite数据类型 三.SQlite数据库的使用 1.创建类继承SQLiteOP ...

  9. Flask——创建数据库表

    创建数据库表的基本指令: # 清除数据库里的所有数据, 谨慎使用db.drop_all()# 创建所有的表db.create_all() 完整代码如下: from flask import Flask ...

最新文章

  1. 在VMWare中配置SQLServer2005集群 Step by Step(四)——集群安装
  2. golang 函数定义
  3. MIT提出Matlab插件mNeuron:实现深度模型神经元的可视化
  4. Linq 常用操作(增删改)
  5. break VS continue
  6. visual设计的界面发布到iis上显示不一样_享声 SOUNDAWARE 发布可“全民HIFI“的网播一体机 A1...
  7. 在华为云ECS上手工通过Docker部署tomcat
  8. 小程序 实名信息_微信小程序+商城信息管理系统
  9. 计算机控制技术在医学的应用,华北工控:嵌入式计算机在医疗CT机中的应用
  10. 如何设置GridView的列宽
  11. 吾不是爱管闲事,实在是忍无可忍
  12. 项目管理(PMP)你要的干货都在这!
  13. Vue 下载本地静态资源static文件夹
  14. 在VMware16中安装 Win10操作系统
  15. 一文带你彻底厘清 Kubernetes 中的证书工作机制
  16. 房屋租赁合同无效条件包括哪些
  17. 优柔但不寡断、柔弱绝不可欺、善良却不可骗、宽容而非懦弱
  18. Centos6安装SGE以及集群配置
  19. Edge Case UVA - 1646
  20. Windows7 使用SMB服务实现局域网共享文件

热门文章

  1. 马斯克的人生至暗时刻
  2. 虾皮电商好做吗?虾皮电商运营难吗?
  3. 【Python3.6爬虫学习记录】(十五)Scrapy爬虫框架的应用及马赛克拼图生成
  4. RK3588平台开发系列讲解(USB篇)UAC初识
  5. 两顶白帽子和一顶红帽子_自我发展:我如何不戴两顶帽子并找到第三顶帽子
  6. 数组排序sort()。升序还是降序
  7. 拼多多商品详情,产品竞价,关键词搜索接口
  8. idea中java文件左下角出现小黄J以及所有注解报红处理
  9. 小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点
  10. datasets数据集