DRY
對于不同數(shù)據(jù)源都應該獨立存在,減少冗余的數(shù)據(jù)缸榄。
model就是你唯一可信的真實數(shù)據(jù)源纠修。它包含了你所要存儲數(shù)據(jù)的必須字段和行為信息。Django遵循DRY 目的是讓你可以在一個地方定義你的數(shù)據(jù)模型,并以它來驅(qū)動整個項目
簡單來說就是本地數(shù)據(jù)
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鸟召,每一個類都有數(shù)個對應數(shù)據(jù)庫字段的類成員變量組成想鹰。
每一個類成員變量中必選參數(shù)和可選參數(shù),
可選參數(shù)
方法名 | 具體用法 |
---|---|
default | 默認參數(shù) |
primary_key | 主鍵药版,默認是遞增數(shù)字 |
max_length | 允許的最大長度 |
unique | 默認是false辑舷。唯一值 |
choices | 它是一個可迭代的二元組(例如,列表或是元組)槽片,用來給字段提供選擇項何缓。 |
blank | 默認false,可以為空 |
model子類的方法(部分)
方法名 | 具體用法 |
---|---|
AutoField | 必須設置為主鍵的field才能設置还栓,int類型碌廓。產(chǎn)生一個自增的主鍵,一個model中不能超過1個值 |
BigAutoField | 自增長的數(shù)據(jù)為8字節(jié)空間 |
BigIntegerField | 返回8字節(jié)的整型類型 |
BinaryField | 二進制類型 |
BooleanField | 布爾型和NullBooleanField有區(qū)別剩盒,true/false谷婆,本類型不允許出現(xiàn)null |
CharField | 定長的字符串類型,一般創(chuàng)建時寫入max_length |
CommaSeparatedIntegerField | 逗號分隔的整數(shù)辽聊,考慮到數(shù)據(jù)庫的移植性纪挎,max_length參數(shù)應該必選 |
DateField | 對應Python的datetime.date,額外的參數(shù):DateField.auto_now表示是否每次修改時改變時間跟匆,DateField.auto_now_add 表示是否創(chuàng)建時表示時間异袄,一般來說數(shù)據(jù)庫重要的表都要有這樣的字段記錄創(chuàng)建字段時間個最后一次改變的時間。 |
TextField | 不定長的字符串類型 |