七Django_,model

Posted 糖猴子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了七Django_,model相关的知识,希望对你有一定的参考价值。

 

设计系统表

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的主要内容,如果未能解决你的问题,请参考以下文章

七 Django框架,models.py模块,数据库操作——F和Q()运算符:|或者&并且——queryset对象序列化

Django笔记七之ManyToMany和OneToOne介绍

Django REST framework序列化

django中对model模型添加方法

django中对model模型添加方法

Django管理图标和图像