首页 > 代码库 > Django模型
Django模型
数据库表的设计
设计系统表
Django提供完善的模型(model)层主要用来创建和存取数据,不需要我们直接对数据库操作。
Django模型基础知识:
每个模型是一个Python类,继承django.db.models.model类。
该模型的每个属性表示一个数据库表字段。
所有这一切,已经给你一个自动生成的数据库访问的API。
1、打开.../sign/models.py文件,完成表的创建
from django.db import models # Create your models here. """ 发布会表和嘉宾表中默认都会生成自增id,而我们在创建模型时不需要声明该字段 发布会表中增加了status字段用于表示发布会的状态是否开启,用于控制该发布会是否可用 嘉宾表中通过event_id关联发布会表,一条嘉宾信息一定所属于某一场发布会 对于一场发布会来说,一般会选择手机号作为一位嘉宾的验证信息,所以,对于一场发布会来说, 手机号必须是唯一。除了嘉宾id外,这里通过发布会id+手机号来做为联合主键 """ # 发布会表 class Event(models.Model): name = models.CharField(max_length=100) # 发布会标题 limit = models.ImageField() # 参加人数 status = models.BooleanField() # 状态 address = models.CharField(max_length=200) # 地址 start_time = models.DateTimeField(‘events time‘) # 发布会时间 create_time = models.DateTimeField(auto_now=True) # 创建时间(自动获取当前时间) # __str__()方法告诉Python如何将对象以str的方式显示出来。所以,为每个模型类添加了__str__()方法 # 如果是Python2.x的话,这里需要使用__unicode__() def __str__(self): return self.name # 嘉宾表 class Guest(models.Model): event = models.ForeignKey(Event) # 关联发布会id real_name = 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: unique_together = ("event", "phone") def __str__(self): return self.real_name
Django Models的数据类型,如下表:
(依据C:\Python35\Lib\site-packages\django\db\models\fields\__init__.py文件)
AutoField |
|
IntegerField |
||||||
BooleanField |
true/false |
|
||||||
CharField |
maxlength,必填 |
|
||||||
TextField |
|
|
||||||
CommaSeparatedIntegerField |
maxlength,必填 |
逗号分隔 |
||||||
DateField |
|
|
||||||
DateTimeField |
|
|
||||||
EmailField |
|
|
||||||
FileField |
upload_to,可选 |
object.get_myfile_url |
||||||
FilePathField |
|
|
||||||
FloatField |
|
|
ImageField |
|
需要验证,即Python Imaging Library |
||||||
IntegerField |
|
|
||||||
IPAddressField |
|
|
||||||
NullBooleanField |
|
相当于设置了null=True的BooleanField |
||||||
PhoneNumberField |
|
美国电话号码格式 |
||||||
PositiveIntegerField |
|
正整数字段 |
||||||
PositiveSmallIntegerField |
|
小的正整数字段,取决于数据库特性 |
||||||
SlugField |
|
短标签,仅包含字母、数字、下划线、连字符,一般用于url |
||||||
SmallIntegerField |
|
小整数字段,依赖于数据库特性 |
||||||
TimeField |
|
|
||||||
URLField |
verify_exists(True),检查URL可用性 |
|
||||||
USStateField |
|
两个字母表示的美国州名字段 |
||||||
XMLField |
schema_path,必选 |
|
Django模型