首頁 後端開發 Python教學 django 常用orm操作實例介紹

django 常用orm操作實例介紹

Sep 15, 2017 am 10:50 AM
django 介紹 實例

下面小編就為大家帶來一篇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

資料:a=1

URL配置中的正規表示式匹配的是一個url的路徑部分

TEMPALTE(範本):HTML程式碼+邏輯控製程式碼

#邏輯控制語法: {{}} 渲染變數filter : {{var|方法:參數}}

##{% %} 渲染標籤
{% if %}
{% for %}
{% url %}
{% url %}

##自訂filter和simpletag:

(1)在app中建立templatetags模組(必須的)

#(2)建立任意.py 文件,如:my_tags.py

from django import template

register = 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)


在models.py檔案中建立多對多關係

authors=models.ManyToManyField("Author") #多對多如果表在下方則需要加引號

多對多的新增

ManyToMany只有一種新增方式:

book.authors.add(*[author1 ,author2])

book.authors.remove(*[author1,author2])


注意:理解book_obj.publisher

#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.save()

s=models.Book2Author(author=author_obj ,Book_id=1)
s.save()

.value 和.value_list 操作圖書表book

#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和save的區別:

update只是set指定的字段save set所有字段,所以update 效率更高

查詢:

擴充內容
# 查詢相關API:

# <1>filter(**kwargs): 它包含了與所給篩選條件相符的物件

# <2>all(): 查詢所有結果

# <3>get(**kwargs): 傳回與所給篩選條件相符的對象,傳回結果有且只有一個,如果符合篩選條件的物件超過一個或沒有都會拋出錯誤。

#-----------下面的方法都是再處理查詢的結果:例如objects.filter.values()--------

## <4>values(*field): 回傳一個ValueQuerySet-一個特殊的QuerySet,運行後得到的並不是一系列model的實例化對象,而是一個可迭代的字典序列

# <5>exclude(**kwargs): 它包含了與所給篩選條件不符的物件

# <6>order_by(*field): 對查詢結果排序

# <7>reverse(): 對查詢結果反向排序

# <8>distinct(): 從回傳結果中剔除重複紀錄

# <9> ;values_list(*field): 它與values()非常相似,它返回的是一個元組序列,values返回的是一個字典序列

# <10>count(): 返回資料庫中匹配查詢(QuerySet)的物件數量。

# <11>first(): 回傳第一筆記錄

# <12>last(): 傳回最後一筆記錄

# <13> exists(): 如果QuerySet包含數據,就傳回True,否則回傳False

以上是django 常用orm操作實例介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1253
24
Django vs. Flask:Python Web框架的比較分析 Django vs. Flask:Python Web框架的比較分析 Jan 19, 2024 am 08:36 AM

Django和Flask都是PythonWeb框架中的佼佼者,它們都有著自己的優點和適用場景。本文將對這兩個框架進行比較分析,並提供具體的程式碼範例。開發簡介Django是一個全功能的Web框架,它的主要目的是為了快速開發複雜的Web應用。 Django提供了許多內建的功能,例如ORM(物件關聯映射)、表單、認證、管理後台等。這些功能使得Django在處理大型

Django框架的優點和缺點:您需要知道的一切 Django框架的優點和缺點:您需要知道的一切 Jan 19, 2024 am 09:09 AM

Django是一個完整的開發框架,該框架涵蓋了Web開發生命週期的各個方面。目前,這個框架是全球最受歡迎的Web框架之一。如果你打算使用Django來建立自己的Web應用程序,那麼你需要了解Django框架的優點和缺點。以下是您需要知道的一切,包括具體程式碼範例。 Django優點:1.快速開發-Djang可以快速開發Web應用程式。它提供了豐富的庫和內

如何升級Django版本:步驟與注意事項 如何升級Django版本:步驟與注意事項 Jan 19, 2024 am 10:16 AM

如何升級Django版本:步驟和注意事項,需要具體程式碼範例引言:Django是一個功能強大的PythonWeb框架,它持續地進行更新和升級,以提供更好的效能和更多的功能。然而,對於使用較舊版Django的開發者來說,升級Django可能會面臨一些挑戰。本文將介紹如何升級Django版本的步驟和注意事項,並提供具體的程式碼範例。一、備份項目檔案在升級Djan

Django是前端還是後端?一探究竟! Django是前端還是後端?一探究竟! Jan 19, 2024 am 08:37 AM

Django是一個由Python編寫的web應用框架,它強調快速開發和乾淨方法。儘管Django是web框架,但要回答Django是前端還是後端這個問題,需要深入理解前後端的概念。前端是指使用者直接和互動的介面,後端是指伺服器端的程序,他們透過HTTP協定進行資料的互動。在前端和後端分離的情況下,前後端程式可以獨立開發,分別實現業務邏輯和互動效果,資料的交

什麼是狗狗幣 什麼是狗狗幣 Apr 01, 2024 pm 04:46 PM

狗狗幣是一種基於網路迷因創建的加密貨幣,沒有固定的供應上限,交易時間快速,交易費用低,擁有龐大的迷因社群。用途包括小額交易、打賞和慈善捐贈。然而,其無限供應量、市場波動和作為笑話幣的地位也帶來風險和擔憂。什麼是狗狗幣?狗狗幣是一種基於網路迷因和笑話創建的加密貨幣。起源與歷史:2013年12月,兩位軟體工程師BillyMarkus和JacksonPalmer創立狗狗幣。靈感來自於當時流行的"Doge"模因,一個以一隻柴犬為特徵的滑稽照片加上破碎英語。特徵與優勢:無限供應量:與比特幣等其他加密貨

在PyCharm中怎樣使用Django框架創建項目 在PyCharm中怎樣使用Django框架創建項目 Feb 19, 2024 am 08:56 AM

如何在PyCharm中利用Django框架創建專案的技巧,需要具體程式碼範例Django是一款功能強大的PythonWeb框架,它提供了一系列用於快速開發Web應用程式的工具和功能。而PyCharm則是Python開發的一款整合開發環境(IDE),提供了一系列方便的功能和工具來增加開發效率。結合Django和PyCharm,在創建專案方面,可以更加快速、方便

網上查成績平台介紹(方便快速的成績查詢工具) 網上查成績平台介紹(方便快速的成績查詢工具) Apr 30, 2024 pm 08:19 PM

快速的成績查詢工具、這為學生和家長提供了更方便,隨著網路的發展,越來越多的教育機構和學校開始提供線上查成績的服務。讓您輕鬆掌握孩子的學業進展,本文將介紹幾個常用的線上查成績平台。一、便捷-透過網路查詢成績平台可以隨時隨地查詢孩子的考試成績家長可以方便地隨時查詢孩子的考試成績,透過在電腦或手機登入對應的網路查詢成績平台。只要有網路連結、無論是在工作中或在外出時、家長都可以及時了解孩子的學習情況,對孩子進行針對性地輔導和幫助。二、多種功能-除了成績查詢,還提供課表、考試安排等資訊許多網路查成

PyCharm新手指南:取代功能全面解析 PyCharm新手指南:取代功能全面解析 Feb 25, 2024 am 11:15 AM

PyCharm是一款功能強大的Python整合開發環境,具有豐富的功能與工具,能夠大幅提升開發效率。其中,替換功能是開發過程中常用的功能之一,能夠幫助開發者快速修改程式碼並提高程式碼品質。本文將詳細介紹PyCharm的替換功能,並結合具體的程式碼範例,幫助新手更好地掌握和使用該功能。替換功能簡介PyCharm的替換功能可以幫助開發者在程式碼中快速替換指定的文本

See all articles