關於模型: 1:一個模型類對應一個表,模型類中的屬性對應表中的一個欄位 2:欄位類型(資料庫支持的類型) 字元串 1:CharField(Maxlength=長度) models.CharField 2:TextFiled 大文本 3:IntegerField 整數 4:DecimalField(m ...
關於模型:
1:一個模型類對應一個表,模型類中的屬性對應表中的一個欄位
2:欄位類型(資料庫支持的類型)
字元串
1:CharField(Maxlength=長度)
models.CharField
2:TextFiled 大文本
3:IntegerField 整數
4:DecimalField(max_digits=None,decimal_places=None) 小數
max_digits 位數總數 decimal_places 小數點後的位數
5:FloatField 小數
6:BooleanField true/false欄位
7:DateField([auto_now=False,auto_now_add=False]) 日期
參數 auto_now:表示每次保存對象時,自動設置該欄位為當前時間
auto_now_add:表示當對象第一次被創建時,設置該欄位為當前時間
這兩個參數互斥
8:TimeField 時間 參數同上
9:DateTimeField 日期加時間 參數同上
10:FileField 一個上傳文件你的欄位
11:ImageField 繼承了FileField的所有屬性和方法,對上傳的對象進行確認,確保是一個image
欄位選項
1:null 預設False 若為true 則以null存入資料庫
2:blanke True則允許空值
3:db_column 命名資料庫列名稱,不設置預設模型里的屬性名
4:primary_key 主鍵
5:unique 若為true 則這個欄位在表中有唯一值
模型成員
類屬性
(1)objects
manage 的一個對象,作用是與資料庫進行交互
例:Students.objects.get(pk=1) 獲取id為1的學生,可以進行增刪改查
當定義模型類時沒有定義管理器,系統自動定義一個名叫objects的管理器
(2)自定義管理器
例:
class grades(models.Model):
stuobj=gradesManager()
gname=models.CharField(max_length=20)
def __str__(self):
return self.gname
在Students模型類中加入:
stuobj=models.Manager()#設定一個名叫obj的管理器
在以後這個類的訪問中,可以使用Students.obj.get()或者all()等方法
自定義後,objects就不能再使用了
(3)自定義管理器Manager類
模型管理器是django的模型與資料庫進行數據交互的介面,一個模型類可以有多個管理器
用處:
1:可以添加額外的方法(即除get(),all())
2:修改管理器返回的查詢集合(過濾)->重寫get.queryset()方法
例:
class gradesManager(models.Manager):
def get_queryset(self):
return super(gradesManager,self).get_queryset().filter(id=1)
此處重寫的get_queryset()方法,篩選出id=1的信息
當然使用的時候要用stuobj()進行操作
2:創建對象