1. 程式人生 > >Django的model模型

Django的model模型

需要 分隔 reference ret 操作符 def urn ons 大小寫

一:字段選項

1,null =True 表示數據庫的中可以存為null 默認值是False

2,blank=True 表示字段可以為空 默認值是False

3,chioces 由二項元組構成的一個可叠代對象,用給字典提供選擇的,取值需要:類對象.get_字段名_display

4,default 設置默認值

5,primary_key 設置這個字段為主鍵

6,unique 如果設置為True 這個數據字段的整張表必須是唯一的

二:自增主鍵字段

primary_key =true 也就是主鍵自增

三:字段自述名

foreignkey manytomany onetoonefield

2,verbose_name 可以命名參數

四:自定義字段類型 Meta的選擇

1,使用內部的class meta 定義模型的元數據,模型源數據是“任何不適字段的數據”

from django.db import models

class Ox(models.Model):
    horn_length = models.IntegerField()

    class Meta:
        ordering = ["horn_length"]
        verbose_name_plural = "oxen"

五:Django查詢的方法

1,get

2,filter

3,all

4,exclade

5,限制查詢集 需要用切片來表示,但是不能負切片

Entry.objects.all()[5:10]

6,字段查詢

exact 精確匹配

 Entry.objects.get(headline__exact="Man bites dog")

iexact 大小寫不敏感匹配

contains 包含匹配

startswith

endswith

in 在裏面

lt 小於

gt大於

7,跨關聯關系查詢

若要跨越關聯關系,只需使用關聯的模型字段的名稱,並使用雙下劃線分隔,直至你想要的字段:也就是__跨表查詢

8,filter中的F查詢,Q查詢

Django 提供F 表達式 來允許這樣的比較。F() 返回的實例用作查詢內部對模型字段的引用。這些引用可以用於查詢的filter 中來比較相同模型實例上不同字段之間值的比較。

Django 支持對F() 對象使用加法、減法、乘法、除法、取模以及冪計算等算術操作,兩個操作數可以都是常數和其它F() 對象

Entry.objects.filter(n_comments__gt=F(n_pingbacks) * 2)

Q 對象可以使用&| 操作符組合起來。當一個操作符在兩個Q 對象上使用時,它產生一個新的Q 對象。

    def get_search_condition(self):
        con = Q()
        con.connector = "OR"
        # asdfasdf
        val = self.request.GET.get(self.q)
        if not val:
            return con
        #  [‘qq__contains‘,‘name]
        field_list = self.get_search_list()
        for field in field_list:
            field = "{0}__contains".format(field)
            con.children.append((field,val))

        return con

Django的model模型