link: https://docs.djangoproject.com/en/1.10/ref/settings/#databases
1.MySQL數(shù)據(jù)庫連接方式
DATABASES = {
‘default‘: {
‘ENGINE‘: ‘django.db.backends.mysql‘,
‘NAME‘:‘dbname‘,
‘USER‘: ‘root‘,
‘PASSWORD‘: ‘xxx‘,
‘HOST‘: ‘‘,
‘PORT‘: ‘‘,
}
}
2、開始創(chuàng)建表,數(shù)據(jù)需要在models.py文件中創(chuàng)建
class UserInfo(models.Model):
# CharField類型不能為空,最少要指定一個(gè)長度
user = models.CharField(max_length=32)
email = models.EmailField(max_length=32)
pwd = models.CharField(max_length=32)
user_type = models.ForeignKey(‘UserType‘)
class UserType(models.Model):
nid = models.AutoField(primary_key=True)
caption = models.CharField(max_length=16)
注:在創(chuàng)建外鍵的時(shí)候直接寫上UserType和‘UserType‘的區(qū)別就是python程序從上到下解釋的順序問題,如果把UserType這個(gè)類寫到下面就會(huì)沒事了
運(yùn)行Djando項(xiàng)目程序,執(zhí)行命令創(chuàng)建數(shù)據(jù):
python3 manage.py makemigrations
python3 manage.py migrate
創(chuàng)建表的的參數(shù):
技術(shù)分享
1、models.AutoField 自增列 = int(11)
如果沒有的話,默認(rèn)會(huì)生成一個(gè)名稱為 id 的列,如果要顯示的自定義一個(gè)自增列,必須將給列設(shè)置為主鍵 primary_key=True。
2、models.CharField 字符串字段
必須 max_length 參數(shù)
3、models.BooleanField 布爾類型=tinyint(1)
不能為空,Blank=True
4、models.ComaSeparatedIntegerField 用逗號(hào)分割的數(shù)字=varchar
繼承CharField,所以必須 max_lenght 參數(shù)
5、models.DateField 日期類型 date
對(duì)于參數(shù),auto_now = True 則每次更新都會(huì)更新這個(gè)時(shí)間;auto_now_add 則只是第一次創(chuàng)建添加,之后的更新不再改變。
6、models.DateTimeField 日期類型 datetime
同DateField的參數(shù)
7、models.Decimal 十進(jìn)制小數(shù)類型 = decimal
必須指定整數(shù)位max_digits和小數(shù)位decimal_places
8、models.EmailField 字符串類型(正則表達(dá)式郵箱) =varchar
對(duì)字符串進(jìn)行正則表達(dá)式
9、models.FloatField 浮點(diǎn)類型 = double
10、models.IntegerField 整形
11、models.BigIntegerField 長整形
integer_field_ranges = {
‘SmallIntegerField‘: (-32768, 32767),
‘IntegerField‘: (-2147483648, 2147483647),
‘BigIntegerField‘: (-9223372036854775808, 9223372036854775807),
‘PositiveSmallIntegerField‘: (0, 32767),
‘PositiveIntegerField‘: (0, 2147483647),
}
12、models.IPAddressField 字符串類型(ip4正則表達(dá)式)
13、models.GenericIPAddressField 字符串類型(ip4和ip6是可選的)
參數(shù)protocol可以是:both、ipv4、ipv6
驗(yàn)證時(shí),會(huì)根據(jù)設(shè)置報(bào)錯(cuò)
14、models.NullBooleanField 允許為空的布爾類型
15、models.PositiveIntegerFiel 正Integer
16、models.PositiveSmallIntegerField 正smallInteger
17、models.SlugField 減號(hào)、下劃線、字母、數(shù)字
18、models.SmallIntegerField 數(shù)字
數(shù)據(jù)庫中的字段有:tinyint、smallint、int、bigint
19、models.TextField 字符串=longtext
20、models.TimeField 時(shí)間 HH:MM[:ss[.uuuuuu]]
21、models.URLField 字符串,地址正則表達(dá)式
22、models.BinaryField 二進(jìn)制
23、models.ImageField 圖片
24、models.FilePathField 文件
更多字段
1、null=True
數(shù)據(jù)庫中字段是否可以為空
2、blank=True
django的 Admin 中添加數(shù)據(jù)時(shí)是否可允許空值
3、primary_key = False
主鍵,對(duì)AutoField設(shè)置主鍵后,就會(huì)代替原來的自增 id 列
4、auto_now 和 auto_now_add
auto_now 自動(dòng)創(chuàng)建---無論添加或修改,都是當(dāng)前操作的時(shí)間
auto_now_add 自動(dòng)創(chuàng)建---永遠(yuǎn)是創(chuàng)建時(shí)的時(shí)間
5、choices
GENDER_CHOICE = (
(u‘M‘, u‘Male‘),
(u‘F‘, u‘Female‘),
)
gender = models.CharField(max_length=2,choices = GENDER_CHOICE)
6、max_length
7、default 默認(rèn)值
8、verbose_name Admin中字段的顯示名稱
9、name|db_column 數(shù)據(jù)庫中的字段名稱
10、unique=True 不允許重復(fù)
11、db_index = True 數(shù)據(jù)庫索引
12、editable=True 在Admin里是否可編輯
13、error_messages=None 錯(cuò)誤提示
14、auto_created=False 自動(dòng)創(chuàng)建
15、help_text 在Admin中提示幫助信息
16、validators=[]
17、upload-to
18、related_name 關(guān)聯(lián)對(duì)象反向引用描述符。
related_name='test'