step1
創建一個應用(python manage.py startapp books) 這裏創建一個叫books應用
,然後在settings中的INSTALLED_APPS參數中加上應用,如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'books',
]
step 2
創建一個model類,一個類對應數據庫中的一張表如下
打book>models.py編寫下面代碼:
from django.db import models
# Create your models here.
class Waybill(models.Model):
waybill_no = models.CharField(max_length = 100)
src_dept_code = models.CharField(max_length = 100)
dist_dept_code = models.CharField(max_length = 100)
product_type = models.CharField(max_length = 100)
jijian_tm = models.DateTimeField()
shoujian_tm = models.DateTimeField()
##等同於之前版本的__unicode__方法,unicode對象
def __str__(self):
return self.waybill_no
執行python manage.py migrate或者python manage.py makemigrations
(django 1.9以後不python manage.py syncdb 不用)
step 3 model操作
1 添加數據
from oiarpt.models import Waybill
w1 = Waybill(waybill_no = 100000000001,src_dept_code = '010R',dist_dept_code = '755R',product_type = 'T1',jijian_tm = '2017-08-11 02:10:00',shoujian_tm = '2017-08-12 10:00:00')
w1.save()
上面的代碼相當於執行了:
insert inot oiarpt_waybill values(...)
2 檢索數據庫:
wb_list = Waybill.objects.all()
相當於執行了
select ... from oiprpt_waybill
3 過濾
wb_list = Waybill.objects.filter(waybill_no = '100000000000')
相當於執行了 :
select ... from oiprpt_waybill where wayblii_no = '100000000000'
wb_list = Waybill.objects.filter(waybill_no__contains = '10000')
相當於執行了 :
select ... from oiprpt_waybill where wayblii_no like '10000'
類似__contains 還有
__icontains: 忽略大小寫
__startswith:以…開頭
__endswith: 以…結尾
__range:相當於between
與filter() 方法相同的還有get()方法,但是get只能後加一條數據, 返回多個,或者是None都會報錯
4 排序:
wb_list = Waybill.objects.order_by("-waybill_no")#按waybill_no 倒序排序
相當於執行了:
select ... from oiarpt_waybill
order by waybill_no desc
別一個種方法是在model加上默認排序的字段:
class Waybill(models.Model):
waybill_no = models.CharField(max_length = 100)
src_dept_code = models.CharField(max_length = 100)
dist_dept_code = models.CharField(max_length = 100)
product_type = models.CharField(max_length = 100)
jijian_tm = models.DateTimeField()
shoujian_tm = models.DateTimeField()
##等同於之前版本的__unicode__方法,unicode對象
def __str__(self):
return self.waybill_no
#指定排序的字段
class Meta:
ordering = ['-waybill_no']
5 更新數據
Waybill.objects.filter(waybill_no = '100000000000').update(product_type = 'T2')
6 刪除對象
w = Waybill.object.get(waybill_no = '100000000000')
w.delete()