django中創建一個Model

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()
發佈了63 篇原創文章 · 獲贊 59 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章