django框架-model 模型层

Django 提供模型(model)层用来创建和存取数据,不需要直接对数据库操作。
[pydj-项目名称 sign-签到应用的名称]
django框架-model 模型层_第1张图片
model基础知识:
每个model是一个Python 类,继承django.db.models.model 类。
该model的每个属性表示一个数据库表字段。
所有这一切,django已经自动生成的数据库访问的API。
打开…/sign/models.py 文件,完成表的创建。

#coding=utf-8
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class Event(models.Model):#发布会表
	name = models.CharField(max_length=100) #发布会标题
	limit = models.IntegerField() #参加人数
	status = models.BooleanField() #状态
	address = models.CharField(max_length=200) #地址
	start_time = models.DateTimeField('event time') #发布会时间
	create_time = models.DateTimeField(auto_now=True) #创建时间,自动获取当前时间
	def __unicode__(self):
		return self.name

class Guest(models.Model):
	event = models.ForeignKey(Event)  # 关联发布会id
	realname = models.CharField(max_length=64)  # 姓名
	phone = models.CharField(max_length=16)  # 手机号
	email = models.EmailField()  # 邮箱
	sign = models.BooleanField()  # 签到状态
	create_time = models.DateTimeField(auto_now=True)  # 创建时间(自动获取当前时间)

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

	def __str__(self):
		return self.realname

在cmd输入以下指令,生成数据库:

D:\jin_python\pydj\guest>python manage.py makemigrations sign
Migrations for 'sign':
sign\migrations\0001_initial.py:
- Create model Event
- Create model Guest
- Alter unique_together for guest (1 constraint(s))
D:\jin_python\pydj\guest>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions, sign
Running migrations:
Applying sign.0001_initial... OK

在…sign/admin.py中添加代码:
django框架-model 模型层_第2张图片
这些代码通知admin 管理工具为这些模块逐一提供界面。
django框架-model 模型层_第3张图片
点击 Events 一行的 add 添加发布会信息:
django框架-model 模型层_第4张图片
点击save后 保存成功:
django框架-model 模型层_第5张图片
其中,ID是系统自增生成的(之前已创建一条数据,删除了,所以本次新增的数据ID默认为2)

点击 Guest 一行的 add 添加嘉宾信息:

django框架-model 模型层_第6张图片
点击save后,产生一条嘉宾信息:

django框架-model 模型层_第7张图片
界面中 search 为搜索栏,filter 为过滤器,可以搜索或者过滤显示符合条件的数据于界面上。对应代码在…sign/admin.py 中:

search_fields = ['name'] #搜索栏
list_filter = ['status'] #过滤器

django框架-model 模型层_第8张图片django框架-model 模型层_第9张图片
总结django的数据库支持的数据类型字段和用法说明

类型 说明
AutoField 存放integer 类型的数字。
BooleanField 存放布尔类型的数据(Ture 或False)
CharField 存放字符型的数据,需要最大可存储的长度
CommaSeparatedIntegerField 存放用逗号隔开的integer 类型的数据
DateField 日期型,必须是“YYYY-MM-DD”格式
DateTimeField 日期时间型,必须是"YYYY-MM-DD HH:MM格式
DecimalField 小数型,用于存放小数的数字
EmailField 电子邮件类型
FilePathField 文件路径类类型
FloatField 浮点型。用于存放浮点型数据
IntegerField 用于存放整型的数字
BigIntegerField 用于存放大integer 类型的数字,最大数支持:9223372036854775807
GenericIPAddressField 存放IP 地址的类型,IPv4 和IPv6 地址,字符串格式
NullBooleanField 存储 None, True or False 三者之一
PositiveIntegerField 正整数型
PositiveSmallIntegerField 范围小的正整数型,0到 32767。
SlugField 只能包含字母,数字,下划线和连字符的字符串,通常被用于URLs表示。可选参数max_length=50
SmallIntegerField 小整数字段,类似于IntegerField,取值范围依赖于数据库特性,[-32768 ,32767]
TextField 用于存放文本类型的数据。
TimeField 时间类型。“HH:MM[:ss[.uuuuuu]]” 格式
URLField 用于存放URL 地址
BinaryField 存储原始二进制数据,仅支持字节分配

你可能感兴趣的:(python,django)