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的安裝路徑一定要...