Django 提供模型(model)层用来创建和存取数据,不需要直接对数据库操作。
[pydj-项目名称 sign-签到应用的名称]
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中添加代码:
这些代码通知admin 管理工具为这些模块逐一提供界面。
点击 Events 一行的 add 添加发布会信息:
点击save后 保存成功:
其中,ID是系统自增生成的(之前已创建一条数据,删除了,所以本次新增的数据ID默认为2)
点击 Guest 一行的 add 添加嘉宾信息:
界面中 search 为搜索栏,filter 为过滤器,可以搜索或者过滤显示符合条件的数据于界面上。对应代码在…sign/admin.py 中:
search_fields = ['name'] #搜索栏
list_filter = ['status'] #过滤器
类型 说明
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 存储原始二进制数据,仅支持字节分配