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()