文章目录

  • 模型类
    • 模型类设计
    • 生成迁移文件
    • 执行迁移生成表
    • 通过模型类操作数据表
  • 后台管理
    • 1.本地化
    • 2.创建管理员
    • 3. 管理员登陆网址
    • 4.注册模型类
    • 5.自定义表单

模型类

模型类设计

在应用models.py中设计模型类,在设计类的过程中必须继承于models.Model这个类

  • 设计出一个BookInfo
  • 扩展点 : Models.ForeignKey可以建立两个模型类之间一对多的关系,Django在生成表的上号,就会在多的表中创建一列作为外键,建立两个表之间一对多的关系。

models.py

from django.db import models
# 该models为设计表的类和模型
# Create your models here.# 图书类
# 继承于models.Model这个模型
# Django会默认的创建出主键id来class BookInfo(models.Model):"""图书类"""# 该CharField 为字符串字段d,max_length为设置最大的字符串的长度title = models.CharField(max_length=20)# 该DateField 为日期类型press_time = models.DateField()

生成迁移文件

什么是迁移文件?

​ 迁移文件就是把你创建出来的模型类来生成出对应的操作数据库的文件

python manage.py makemigrations

生成的迁移文件

0001_initial.py

# Generated by Django 3.0.7 on 2020-06-08 04:06from django.db import migrations, modelsclass Migration(migrations.Migration):initial = Truedependencies = []operations = [migrations.CreateModel(name='BookInfo',fields=[('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),('title', models.CharField(max_length=20)),('press_time', models.DateField()),],),]

执行迁移生成表

什么是迁移表?

​ 根据迁移文件生成表,

python manage.py migrate

通过模型类操作数据表

进入项目shell的命令

python manage.py shell

  • 导入模型类:from booktest.models import BookInfo
  • 实例化类:b = BookInfo()
  • save: 提交数据保存

操作例子如下:

(Django框架-JEQCbmfB) $ python manage.py shell
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from booktest.models import BookInfo
>>> # 实例化类
>>> b = BookInfo()s
>>> # 调用类的实例属性进行操作
>>> # 该操作要先进行生成迁移文件并执行迁移文件后的操作
>>> b.book_name = "Python数据分析"
>>> from datetime import date
>>> b.press_time = date(2020,6,8)
>>> # 进行数据保存
>>> b.save()
>>> # Django会自动生成id只
>>> # Django会自动生成id值
>>> data = BookInfo.objects.get(id=1)
>>> type(data)
<class 'booktest.models.BookInfo'>
>>> data.book_name
'Python数据分析'
>>> data.press_time
datetime.date(2020, 6, 8)
>>> data.id
1
>>> data.save()
>>> data.book_name
'Python数据分析'

查询图书表里面的所有内容

  • BookInfo.objects.all()
  • HeroInfo.objects.all()
(Django框架-JEQCbmfB) $ python manage.py shell
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> # 导入库
>>> from booktest.models import BookInfo,HeroInfo
>>> b = BookInfo()
>>> # 进行添加数据
>>> b.book_name = '利用Python进行数据分析'
>>> from datetime import date
>>> b.press_time = date(2020,6,8)
>>> h = HeroInfo()
>>> h.hname = 'pandas使用'
>>> h.gender = False
>>> h.hcomment = '这是一个数据分析的库'
>>> h.hbook = b
>>> h.save()
>>> b.save()
>>> h3 = HeroInfo.objects.get(id=1)
>>> h3.hname
'pandas使用'
>>> h.hbook
<BookInfo: BookInfo object (1)>
>>> h.hbook_id
1
>>> h.hcomment
'这是一个数据分析的库'
>>> h.gender
False

关系操作

后台管理

1.本地化

  • 语言和时区的本地化
  • 修改settings.py文件
# 该语言为中文语言配置
LANGUAGE_CODE = 'zh-hans'# 该时区为美国时区
TIME_ZONE = 'Asia/shanghai'

2.创建管理员

命令:python manage.py createsuperuser

3. 管理员登陆网址

http://127.0.0.1:8000/admin/

4.注册模型类

在应用下的admin.py中注册模型类

告诉Django框架根据注册的模型类来生成对应表管理页面

admin.py

from django.contrib import admin
from booktest.models import BookInfo
from booktest.models import HeroInfo
# 该文件为超级用户员管理文件
# Register your models here.# 添加模型类
# site : 翻译为地点的意思
# register : 登记表
admin.site.register(BookInfo)
admin.site.register(HeroInfo)

为什么要重写模类中的__str__

在页面查询出来的结果为实例化对象,当我们想进行想打印其他内容的时候,可以调用__str__这个方法来进行操作

>>> from booktest.models import BookInfo
>>> b = BookInfo.objects.get(book_name = '利用Python进行数据分析')
>>> b
<BookInfo: BookInfo object (1)>
>>> str(b)
'BookInfo object (1)'

models.py

from django.db import models# Create your models here.# 创建一个图书类class BookInfo(models.Model):"""图书类"""book_name = models.CharField(max_length=20)press_time = models.DateField()def __str__(self):"""重写该方法"""return self.book_nameclass HeroInfo(models.Model):"""英雄类"""hname = models.CharField(max_length=20)hgender = models.BooleanField(default=False)hcomment = models.CharField(max_length=20)hbook = models.ForeignKey('BookInfo', on_delete=models.CASCADE)def __str__(self):"""重写该方法"""return self.hname

重写后更加直观查看数据



5.自定义表单

自定义表单的条件:

  • 创建一个类继承与admin.ModelAdmin
  • 在添加模型中把定义的类添加定义的类admin.site.regsiter()
  • 字段要对应创建模型类的字段一致

自定义管理类。模型管理类就是告诉Django在生成的管理页面上显示哪些内容

admin.py

from django.contrib import admin
from booktest.models import BookInfo
from booktest.models import HeroInfo# 该文件为超级用户员管理文件
# Register your models here.# 自定义模型类
# 继承与admim中的ModelAdminclass BookInfoAdmin(admin.ModelAdmin):# 注意list_display对应着模型类的字段list_display = ['id', 'book_name', 'press_time']class HeroInfoAdmin(admin.ModelAdmin):list_display = ['id', 'hname', 'hgender', 'hcomment', 'hbook']# 添加模型类
# site : 翻译为地点的意思
# register : 登记表
admin.site.register(BookInfo, BookInfoAdmin)
admin.site.register(HeroInfo, HeroInfoAdmin)

Django模型类与后台管理相关推荐

  1. 第十章:django模型类(二)

    系列文章目录 第一章 :Django安装与配置虚拟环境 第二章:django各模块的作用以及参数说明 第三章:  Django的路由与视图 第四章:django请求 第五章:django会话 第六章: ...

  2. python管理数据库设计_Pycharm+Django+Python+MySQL开发 后台管理数据库

    Django框架十分简单易用,适合搭建个人博客网站.网上有很多教程,大多是关于命令行操作Django,这里分享一些用最新工具进行Django开发过程,主要是PyCharm太强大,不用有点可惜. 第一次 ...

  3. Django模型类操作数据表

    1.创建项目 django-admin startproject my_first_django # 创建一个名称为my_first_django的项目 命令执行后会产生一个项目名称的文件夹和一个ma ...

  4. Django 教程之配置后台管理页面xadmin

    admin是django官方提供,这里使用第三方代替,更出色 概述 项目地址:https://github.com/sshwsfc/xadmin 官方网站:http://sshwsfc.github. ...

  5. [开源] FreeSql.AdminLTE.Tools 根据实体类生成后台管理代码

    前言 FreeSql 发布至今已经有9个月,功能渐渐完善,自身的生态也逐步形成,早在几个月前写过一篇文章<ORM 开发环境之利器:MVC 中间件 FreeSql.AdminLTE>,您可以 ...

  6. django 模型类的常见字段约束,以及filter 过滤和查询

    null 不设置时默认设置为False.设置为True时,数据库表字段中将存入NULL的记录. null和blank组合使用,null=True,blank=True,表示该字段可以为空 blank ...

  7. Python Django 模型类字段常用属性

  8. django模型类中,为什不是user_id而是user?

    class UserRole(models.Model):"""用户角色表,一个用户可以同时拥有多种角色"""user_id = model ...

  9. admin后台管理及数据库表管理

    admin 后台数据库管理 django 提供了比较完善的后台管理数据库的接口,可供开发过程中调用和测试使用 django 会搜集所有已注册的模型类,为这些模型类提拱数据管理界面,供开发者使用 使用步 ...

最新文章

  1. 由于问题引起信号ORA-27154无法启动数据库
  2. mqtt linux 编译,MQTT客户端代码X64位Ubuntu环境编译+测试实践小结
  3. python二级多少分过_python二级操作题与分析(2)
  4. Java实现把一个对象复制给另一个有相同字段属性的对象
  5. c语言中for中声明变量,C中for循环中的变量重新声明
  6. arch Linux 添加引导,ArchLinux 添加开机启动脚本, 亲测
  7. leetcode 424. Longest Repeating Character Replacement | 424. 替换后的最长重复字符(Java)
  8. 初识Hibernate 缓存
  9. 讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当 new 的时候, 他们的执行顺序
  10. Properties类与IO流
  11. vscode 打开函数表_效率倍增!10个超级好用的VScode使用技巧!
  12. java进阶06 线程初探
  13. 知识图谱商业应用 、介绍
  14. 51单片机跑马灯c语言,51单片机——跑马灯详解(示例代码)
  15. 软件集成测试分析,软件集成测试报告模板
  16. 【数据分析】销售案例——杜邦分析法
  17. 浏览器份额及其历史以及内核变迁总结
  18. 南通大学计算机组成原理实验,南通大学医学院(护理学院)专业
  19. log4cxx vs2019编译
  20. 阿里总参谋长曾鸣:区块链中没有绝对的“去中心化”

热门文章

  1. php iofactory列,PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
  2. 数据结构--链栈的c语言实现(超详细注释/实验报告)
  3. 逻辑表达式 -- 对蕴含的理解(举例更清晰、明白哦)
  4. jdbc localhost mysql_JDBC连接MySQL
  5. 总账库存科目明细追溯
  6. python判断三角形程序_python三角形判定怎么做
  7. Linux-搭建web服务器
  8. 旋转电机设计_尤哈·皮罗内 PDF完整版下载 网盘分享
  9. LPC2294对片外EEPROM(24C04)进行读写操作,如何确定24C02EEPROM地址
  10. 【重要】黑苹果安装之 BIOS 设置篇