web開發學習 9 Django之關聯關係

2021-09-25 23:31:52 字數 1974 閱讀 6621

django提供了三種關聯關係的方法:

使用django.db.models.foreignkey進行關聯:

from django.db import models

class product(models.model):

product_name = models.charfield(max_length=80)

price = models.integerfield()

class order(models.model):

products = models.foreignkey(product, on_delete = models.cascade)

order_num = models.integerfield()

如何建立關係 :add()、create()、set()

什麼是多對多的關係,舉個例子,pizza和配料之間就屬於這種關係:一種pizza有多種配料,一種配料也可能用於製作多種pizza

from django.db import models

class topping(models.model):

pass

class pizza(models.model):

toppings = models.manytomanyfield(topping)

在多對多(many-to-many)關係中新增新增額外的屬性字段:再建乙個表,用於記錄與這兩個表相關的額外的資訊,這張新建的表叫中間模型,通過through引數來做關聯,models.manytomanyfield(topping, through='order')

from django.db import models

class topping(models.model):

pass

class pizza(models.model):

toppings = models.manytomanyfield(topping,through='order') #通過through引數指定中間模型

class order(models.model):

customer_id = integerfield()

order_date = datetimefield()

pizza = models.foreignkey(pizza, on_delete = models.cascade) #使用外建關聯多對多關係的兩端

toppings = models.foreignkey(topping, on_delete = models.cascade)

多對多關係(帶中間模型)相關操作關係必須通過中間模型來實現,而不能通過兩端直接建立聯絡

top1 = topping(**kwarg)

top2 = topping.objects.create(**kwarg)  

p1 = pizza(**kwarg)

p2 = pizza.objects.create(**kwarg)

order1 = order(pizza=p1,toppings=top1,**kwargs)      #通過例項化中間模型,來建立多對多兩端關係

order1.pazza.all()

order1.toppings.all()

top1.pizza_set.all()

pizza.topping_set.all()

參考:

相當於sql語句中的join操作

blog.objects.filter(entry__headline__contains='lennon')  #用雙下劃線連線,entry物件的headline屬性包含有'lennon'子串

Web開發之Django框架的學習

1,環境配置及安裝不再贅述,一句話 不怕死的可以在windows下面搭建 想好好幹的就在linux下面安裝。參考教材 2.關於import路徑,linux下預設搭建好,windows下需要自己新增 當linux下提示model not found的時候,檢查自己的拼寫是否正確 1.在manage.p...

Python和Web開發之 Django框架 二

上節的內容中寫了一些簡單的入門基礎知識,包括安裝django 在django中建立乙個專案 執行開發伺服器等等內容,這次再介紹一些關於框架的基礎知識,對django多一些了解。學習過python的人一定知道python直譯器的強大之處。對於django而言,shell也存在於框架之中,在框架中pyt...

Python進行web開發 django

使用dows命令操作網路頁面 步驟如下 1.先在某磁碟下建立乙個新的資料夾web 資料夾名,任意取名 web資料夾下再新建乙個blog資料夾 任意取名 2.根據idea軟體開發工具中儲存python的project sdk的路徑找到django admin.exe ps python的安裝路徑一定要...