码迷,mamicode.com
首页 > 其他好文 > 详细

七、Django_,model

时间:2017-12-30 19:59:52      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:sqli   object   顺序   python语言   files   oge   联合主键   电子   date   

 

设计系统表

1、创建数据库表模型--model

1.1、相关概念

数据库(MySQL)

数据库驱动(MySQLdb):用SQL语句操作数据库

模型(ORM):用编程语言操作数据库表(利用类、对象、方法来定位操作数据库表)

编程语言:python语言

1.2、相关流程

通过python语言利用数据库驱动(SQL语句)调用数据库的过程中在前面还需要一个模型(ORM)的转换过程

技术分享图片

创建数据库表(发布会表、嘉宾表)

1、发布会表

1.1、在model层里面创建两个数据库,分别为发布会表、嘉宾表

创建完毕表之后,需要创建字段,一般每张表里面都有一个ID来进行标识;Django会默认帮忙创建一个自增的ID

技术分享图片

1.2、定义字段类型

表名 = 定义一个类

字段名 = 在类下面定义一个变量

字段类型 = 调用model下面的字段类型

长度(数据库空间长度) =  类下面变量的定义

类型

说明

AutoField

用于存放integer 类型的数字。

BooleanField

用于存放布尔类型的数据(Ture 或False)

CharField

用于存放字符型的数据,需要指定长度max_length。

CommaSeparatedIntegerField

用于存放用逗号隔开的integer 类型的数据。

DateField

日期型,必须是“YYYY-MM-DD”格式

DateTimeField

日期时间型,必须是"YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] "格式。

DecimalField

小数型,用于存放小数的数字。

EmailField

电子邮件类型

FilePathField

文件路径类类型,FilePathFields must have either ‘allow_files‘ or ‘allow_folders‘

set to True.

IntegerField

用于存放integer 类型的数字。

BigIntegerField

用于存放大integer 类型的数字,最大数支持:9223372036854775807

GenericIPAddressField

存放IP 地址的类型,IPv4 和IPv6 地址,字符串格式。

NullBooleanField

vlaue must be either None, True or False.

PositiveIntegerField

Positive integer

PositiveSmallIntegerField

Positive small integer

SlugField

需要定义max_length 值。

SmallIntegerField

Small integer

TextField

用于存放文本类型的数据。

TimeField

时间类型。"HH:MM[:ss[.uuuuuu]]" 格式

FloatField

浮点型。用于存放浮点型数据。

URLField

用于存放URL 地址

BinaryField

Raw binary data

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.3、日期(model)

在数据库每创建一条数据,自动插入创建的时间

    creat_time = models.DateTimeField(auto_now=True)   #创建时间(自动获取当前时间)

 2、嘉宾表

2.1、外链:ForeignKey()

    event = models.ForeignKey(Event)    #关联发布会ID

一(发布会)对多(嘉宾表)关系,两个表之间进行;每个嘉宾关联发布会ID

2.2、联合主键(models.py)

    class Meta:   #在父类Guest下面创建一个子类(Meta)
        unique_together = (‘event‘,‘phone‘)   #限制发布会和手机号

唯一性:手机号码

对象:发布会

在父类(Guest)下面创建一个子类(Meta)

3、创建并生成数据库表

3.1、需要在settings.py的INSTALLED_APPS添加sign,不然会如下图,提示:App ‘sign‘ could not be found. Is it in INSTALLED_APPS?

技术分享图片

技术分享图片

3.2、添加完毕3.1的操作之后,终端输入:python3 manage.py makemigrations sign,提示:HINT: Get Pillow at https://pypi.python.org/pypi/Pillow or run command "pip install Pillow".

技术分享图片

cd 到相对应python3文件下面,利用pip导入上面的pillow模块

技术分享图片

3.3、终端输入

python3 manage.py makemigrations sign

3.4、创建数据库成功

技术分享图片

3.5、创建的0001_initial.py文件是将models.py文件里面创建的两个数据库表转换成sqlite3类型文件

3.6、终端输入如下,生成数据库,打开SQLite Manager工具就可以看到,如图2

python3 manage.py migrate

技术分享图片

4、生成的数据库介绍

4.1、sign_event

技术分享图片

4.2、sign_guest

event_id:为关联到发布会表中自动生成的

技术分享图片

5、操作数据库表(发布会)

5.1、将两张数据库表映射到admin后台展示

技术分享图片

技术分享图片

5.2、可直接在后台创建发布会

技术分享图片

技术分享图片

5.3、通过admin后台显示相对应的字段

技术分享图片

  • 创建类,并且继承相对应的方法
  • 将需要展示的在list_display中填写进去(list_display不可以改)
  • 将相对应的方法映射到相对应的页面
  • 字段的展示顺序取决于list_display后面字段的排序

技术分享图片

技术分享图片

5.4、添加过滤器

技术分享图片

技术分享图片

6、操作数据库表(嘉宾表)

6.1、问题描述:选择的类都是类,不是具体的发布会名称(对象对应的发布会都不明确,都是Event object)

技术分享图片

6.2、利用类下面的属性(字段)来描述类

技术分享图片

技术分享图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

七、Django_,model

标签:sqli   object   顺序   python语言   files   oge   联合主键   电子   date   

原文地址:https://www.cnblogs.com/little-turtle/p/7774463.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!