DRY
对于不同数据源都应该独立存在,减少冗余的数据。
model就是你唯一可信的真实数据源。它包含了你所要存储数据的必须字段和行为信息。Django遵循DRY 目的是让你可以在一个地方定义你的数据模型,并以它来驱动整个项目
简单来说就是本地数据
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
上面的代码表明了每一个类都是继承models.Model,每一个类都有数个对应数据库字段的类成员变量组成。
每一个类成员变量中必选参数和可选参数,
可选参数
方法名 | 具体用法 |
---|---|
default | 默认参数 |
primary_key | 主键,默认是递增数字 |
max_length | 允许的最大长度 |
unique | 默认是false。唯一值 |
choices | 它是一个可迭代的二元组(例如,列表或是元组),用来给字段提供选择项。 |
blank | 默认false,可以为空 |
model子类的方法(部分)
方法名 | 具体用法 |
---|---|
AutoField | 必须设置为主键的field才能设置,int类型。产生一个自增的主键,一个model中不能超过1个值 |
BigAutoField | 自增长的数据为8字节空间 |
BigIntegerField | 返回8字节的整型类型 |
BinaryField | 二进制类型 |
BooleanField | 布尔型和NullBooleanField有区别,true/false,本类型不允许出现null |
CharField | 定长的字符串类型,一般创建时写入max_length |
CommaSeparatedIntegerField | 逗号分隔的整数,考虑到数据库的移植性,max_length参数应该必选 |
DateField | 对应Python的datetime.date,额外的参数:DateField.auto_now表示是否每次修改时改变时间,DateField.auto_now_add 表示是否创建时表示时间,一般来说数据库重要的表都要有这样的字段记录创建字段时间个最后一次改变的时间。 |
TextField | 不定长的字符串类型 |