## select提供簡單資料
#person.objects.all().extra(select=) # 加在select後面
## where提供查詢條件
#person.objects.all().extra(where=["
first||last ilike 'jeffrey%'
"]) # 加乙個where條件
## table連線其它表
#book.objects.all().extra(table=['
'], where=['
last = author_last
']) # 加from後面
## params添引數
#!! 錯誤的方式 !!
first_name = '
joe'
#如果first_name中有sql特定字元就會出現漏洞
person.objects.all().extra(where=["
first = '%s'
" %first_name])
#正確方式
person.objects.all().extra(where=["
first = '%s'
"], params=[first_name])
extra原始碼
def extra(self, select=none, where=none, params=none, tables=none,order_by=none, select_params=none):
"""adds extra sql fragments to the query.
"""assert
self.query.can_filter(), \
"cannot change a query once a slice has been taken
"clone =self._clone()
clone.query.add_extra(select, select_params, where, params, tables, order_by)
return clone
原文:
#相關子查詢,而且只能select乙個值(a.id),否則報錯:當沒有用 exists 引入子查詢時,在選擇列表中只能指定乙個表示式innermail.objects.extra(select=)
django查詢中extra的應用
今天有個需求需要查詢到資料庫resc metadata欄位 是乙個json型別的值 中job group去重後的值放入乙個列表 一 通過pymysql完成def set cluster id value data,hirer,resc dict db mysqldb.connect sqlconf ...
Django 教程 Django 模型
乙個django模組是內建的功能,django使用建立表,他們的田地,和各種約束。簡而言之,django models是與django一起使用的sql資料庫。sql 結構化查詢語言 很複雜,涉及許多不同的查詢,用於建立,刪除,更新或與資料庫有關的任何其他內容。django模型簡化了任務並將表組織到模...
Django 模型層 模型
django內建模型方法 乙個模型包含了資料的字段和操作方法,每個模型對映為一張資料庫中的表 person models.py from django.db import models class person models.model first name models.charfield max...