python的類名--------------->SQL語句的表名 python的類屬性--------------->SQL語句的表名下的字段 python的類屬性的約束--------------->SQL語句的表名下的字段類型 類的實例對象--------------->表中的一條記錄
1、建立表(創建模型)html
一、建立類(建立表)python
在應用的models.py文件中建立類,以下例:sql
from django.db import models class Student(models.Model): #必須繼承models.Model類 sid=models.AutoField(primary_key=True) #主鍵且自增 name=models.CharField(max_length=11) #字符串類型,且最大字符數爲11 birth=models.DateField() #日期類型,如:Y-m-d
而後在terminal執行以下兩條命令後,會自動執行models.py文件,將定義的類生成對應的表:數據庫
python manage.py makemigrations python manage.py migrate
若是咱們須要在已經建好的表中增長字段,那麼咱們只須要在對應的類中增長字段,而後從新執行上述兩條命令便可,可是須要強調的是,增長的字段必須設置默認值,不然執行命令時會成功。設置默認值是爲了保證以前已經插入的數據行的新增字段有值。以下例:django
from django.db import models class Student(models.Model): sid=models.AutoField(primary_key=True) name=models.CharField(max_length=11) birth=models.DateField() age=models.IntegerField( default=3) #整數類型,爲後來新增字段,須要設置默認值
2、添加數據app
models文件只負責定義類(建立表),表數據的增刪改查是在views視圖函數中執行,以下添加數據實例:函數
from app01.models import Student def add(request): if request.method=="POST": stu_name=request.POST.get("name") stu_birth=request.POST.get("birth") stu_age=request.POST.get("age") #方式一: s=Student(name=stu_name,birth=stu_birth,age=stu_age) s.save() #保存數據到數據庫 #方式二: Student.objects.create(name=stu_name,birth=stu_birth,age=stu_age) return redirect("/index/") return render(request,"add.html")
上述實例須要注意一點:雖然models.py文件和views.py文件在同一應用目錄下,可是在上述引用模塊時不能寫成from models import Student,由於執行咱們項目的文件是manage.py文件,並不與應用app01下的文件在同一級目錄,而是與app01文件同級,因此根本找不到對應的模塊。翻譯
表數據的增刪改查操做,其實會被翻譯成相應的sql語句,在setting文件中進行以下設置,便可在進行數據操做時在屏幕打印相應的sql語句:3d
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level':'DEBUG', }, } }
執行添加函數後屏幕打印的結果:code
3、編輯數據
首先按照ORM方式,查詢到符合要求的queryset對象,而後update()將符合要求的對象進行更新,實例以下:
from app01.models import Student def edit(request,id): if request.method=="POST": stu_name=request.POST.get("name") stu_birth=request.POST.get("birth") stu_age=request.POST.get("age") Student.objects.filter(tid=id).update(name=stu_name,birth=stu_birth,age=stu_age) return redirect("/index/") stu=Student.objects.filter(tid=id)[0] return render(request,"edit.html",{"stu":stu})
4、刪除數據
首先按照ORM方式,查詢到符合要求的queryset對象,而後delete()將符合要求的對象進行刪除,實例以下:
def delet(request,id): Student.objects.filter(tid=id).delete() return redirect("/index/")