關于模型:
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:創建物件
目的 向資料庫中添加資料
當創建物件時,Django不會與資料庫進行互動,當呼叫save()時,才與資料庫進行互動,將資料保存在資料庫中的表中
注意:__init__方法已經在models.Model使用,在自定義的模型中無法使用
方法1: 在模型類中增加一個類方法
@classmethod
def creatstudent(cls,name):
stu=cls(gname=name)
return stu
使用 在views中:
def CreatStudent(request):
stu=grades.creatstudent("芝龐頓")
stu.save()
return HttpResponse('融合升級,芝龐頓')
方法2:在定義管理器中添加一個方法
定義一個類方法創建物件
例:
class gradesManager(models.Manager):
def get_queryset(self):
return super(gradesManager,self).get_queryset().filter(id=1)
#創建物件
def creatStudent(self,name):
stu=self.model()
stu.gname=name
return stu
使用:在views里
def Creatstudent(request):
stu=grades.stuobj2.creatStudent("海帕杰頓")#在grades類中創建了stuobj2=gradesManager()
stu.save()
return HttpResponse("1234")
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/175005.html
標籤:Python
