下面小編就為大家帶來一篇django 常用orm操作詳解。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧
Django流程:
1 建立Django專案: django-admin startproject projectname
#2 建立應用程式: :python manage.py startapp appname
3 在控制器(urls.py)建立url 與視圖函數的映射關係(一一對應)
#4 建立視圖函數,完成邏輯代碼
5 從資料庫取出集合物件
#5 把資料庫變數嵌入到模板進行渲染(render方法)
6 將渲染後的html頁面回傳給客戶端
URL:協定+網域+連接埠+路徑
#網域:www.cnblogs.com
連接埠:80
路徑:yuanchenqi/articles/6811632.html
URL配置中的正規表示式匹配的是一個url的路徑部分
TEMPALTE(範本):HTML程式碼+邏輯控製程式碼#邏輯控制語法: {{}} 渲染變數filter : {{var|方法:參數}}##{% %} 渲染標籤
{% if %}
{% for %}
{% url %}
{% url %}
##自訂filter和simpletag:
(1)在app中建立templatetags模組(必須的)
#(2)建立任意.py 文件,如:my_tags.py
from django import templateregister = template.Library()
@register.filter
def filter_multi(v1,v2):
return v1 * v2
#(3)建立任意.py 文件,如:my_tags.py
#在使用自訂simple_tag和filter的html 文件中匯入之前建立的my_tags.py :{% load my_tags %}(4)使用simple_tag和filter:
{% load xxx %} #首行# num=12
{ { num|filter_multi:2 }} #24
總結:
##filter:只能接受一個參數,但可以用if等語句
simpletag:能接受多個參數,但不可以用if等語句
ORM:表之表之間的關係:
一對多外鍵欄位一定是在子表(一對多的多的表)中Foreign KEY
多對多在第三張表實現,透過兩個Foreign KEY
一對一在外鍵字段的基礎上增加唯一約束。
使用mysql方法1更改setting檔案db配置
2更改__init__檔案中的驅動程式配置
ORM轉sql的配置settings裡面配置loging
表.object.filter():得到的是一個集合物件例如[obj1,obj2]
表.object.get(): 得到的是一個model物件
一對多的新增記錄:# 方法1:
# Book.objects.create(id=1,title="python",publication_date="2017-03-04",price=88.8,publisher_id=1)
##方法2
p1=Publisher.objects.get(name="人大出版社")
Book.objects.create(id=2,title="python",publication_date="2017-05-04",price=98.8, publisher=p1)authors=models.ManyToManyField("Author") #多對多如果表在下方則需要加引號
多對多的新增ManyToMany只有一種新增方式:
book.authors.add(*[author1 ,author2])
book.authors.remove(*[author1,author2])#book_obj.authors
自建第三張表class Book2Author(models.Model):
author=models.ForeignKey("Author")Book= models.ForeignKey ("Book")
# 那麼就還有一種方式:
author_obj=models.Author.objects.filter(id=2)[0]
book_obj =models.Book.objects.filter(id =3)[0]
s=models.Book2Author.objects.create(author_id=1,Book_id=2)
s=models.Book2Author(author=author_obj ,Book_id=1)
s.save()
#value的使用結果不是物件而是對象的某個欄位或屬性結果也為querySet
ret1=Book.objects.values('title')
ret1_list = Book.objects.values_list('title')print('ret1 is : ',ret1) #結果是:ret1 is :
print(ret1_list) #結果為querySet裡的列表
update只是set指定的字段save set所有字段,所以update 效率更高
查詢:
擴充內容
# 查詢相關API:
# filter(**kwargs): 它包含了與所給篩選條件相符的物件
# all(): 查詢所有結果
# get(**kwargs): 傳回與所給篩選條件相符的對象,傳回結果有且只有一個,如果符合篩選條件的物件超過一個或沒有都會拋出錯誤。
#-----------下面的方法都是再處理查詢的結果:例如objects.filter.values()--------
## values(*field): 回傳一個ValueQuerySet-一個特殊的QuerySet,運行後得到的並不是一系列model的實例化對象,而是一個可迭代的字典序列
# exclude(**kwargs): 它包含了與所給篩選條件不符的物件
# order_by(*field): 對查詢結果排序
# reverse(): 對查詢結果反向排序
# distinct(): 從回傳結果中剔除重複紀錄
#
# count(): 返回資料庫中匹配查詢(QuerySet)的物件數量。
# first(): 回傳第一筆記錄
# last(): 傳回最後一筆記錄
# exists(): 如果QuerySet包含數據,就傳回True,否則回傳False
以上是django 常用orm操作實例介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

如何解決jieba分詞在景區評論分析中的問題?當我們在進行景區評論分析時,往往會使用jieba分詞工具來處理文�...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 Linux新版
SublimeText3 Linux最新版