Python-Django-常用字段和參數
-1 表模型如果不寫主鍵,orm會自動創建一個主鍵
-2 常用字段
AutoField
int自增列,必須填入參數 primary_key=True。當model中如果沒有自增列,則自動會創建一個列名為id的列。
IntegerField
一個整數類型,範圍在 -2147483648 to 2147483647。
CharField
字符類型,必須提供max_length參數, max_length表示字符長度。
DateField
日期字段,日期格式 YYYY-MM-DD,相當於Python中的datetime.date()實例。
DateTimeField
日期時間字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相當於Python中的datetime.datetime()實例
-對到數據庫int類型
不常用
SmallIntegerField
TextField:大文本
EmailField:雖然寫的是email,存的時候,只要是字符串就可以(admin內的校驗)
FileField(Field):存文件
DecimalField
-orm字段參數
-null
-unique:唯一性約束
-db_index:給某個字段加索引
-default
- DateField和DateTimeField
# auto_now_add=True 表示我要新增一條數據,自動設成當前時間
# auto_now=True 只要修改,就更新成當前時間
-關系字段:
-ForeignKey
-to
-to_field
-related_name
-related_query_name
-on_delete:
在刪除的時候,做什麽操作
-models.CASCADE 可以級聯刪除(lqz覺得不好)
-models.SET_NULL (lqz推薦用它)
-models.SET_DEFAULT
-OneToOneField
-同ForeignKey
-ManyToManyField
-自關聯(自己關聯)
-評論表
id user article content parent_id
2 2 1 傻逼 1
-多對多關系自動,手動創建第三張表(中介模型)
第一種:全部手動創建,book跟author沒有關聯關系(不好,不建議使用)
第二種:自動創建第三張表(不太好,第三張表如果有其它字段,就不行了)
第三張:手動創建第三張表,並且用ManyToMany關聯,所有的查詢跟之前一樣,只是增,刪,改,需要通過表模型來處理
-db_constraint=False
-only和defer
# 總結
# only和defer 返回結果是queryset對象內包裹表模型的對象
# only,就是只查我指定的字段,一定會包含id 註意:沒查的字段不要再用了
# defer,指定不取哪個字段,一定會包含id 註意:沒查的字段不要再用了
Python-Django-常用字段和參數