国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Django框架多表查詢實例分析

2020-02-15 22:12:26
字體:
來源:轉載
供稿:網友

本文實例講述了Django框架多表查詢。分享給大家供大家參考,具體如下:

多表查詢是模型層的重要功能之一, Django提供了一套基于關聯字段獨特的解決方案.

ForeignKey

來自Django官方文檔的模型示例:

from django.db import modelsclass Blog(models.Model):  name = models.CharField(max_length=100)  tagline = models.TextField()class Author(models.Model):  name = models.CharField(max_length=50)  email = models.EmailField()class Entry(models.Model):  blog = models.ForeignKey(Blog)  authors = models.ManyToManyField(Author)  headline = models.CharField(max_length=255)  body_text = models.TextField()  pub_date = models.DateField()  mod_date = models.DateField()  n_comments = models.IntegerField()  n_pingbacks = models.IntegerField()  rating = models.IntegerField()

class ForeignKey

ForeignKey字段接受一個Model類作為參數, 類型與被參照的字段完全相同:

blog = models.ForeignKey(Blog)

ForeignKey.to_field

關聯到的關聯對象的字段名稱。默認地,Django 使用關聯對象的主鍵。

blog = models.ForeignKey(Blog, to_field=Blog.name)

ForeignKey.db_constraint

Django Model的ForeignKey字段的主要功能是維護一個一對多的關系, 以進行關聯查詢.

只有在db_constraint=True時Django model才會在數據庫上建立外鍵約束, 在該值為False時不建立約束.

默認db_constraint=True.

ForeignKey.related_name

這個名稱用于讓關聯的對象反查到源對象.

如果你不想讓Django 創建一個反向關聯,請設置related_name 為 '+' 或者以'+' 結尾.

ForeignKey.related_query_nameForeignKey.related_name作為默認值, 兩者功能的具體說明請參見相關文檔

使用ForeignKey查詢

前向查詢

若關系模型A包含與模型B關聯的關聯字段, 模型A的實例可以通過關聯字段訪問與其關聯的模型B的實例:

>>> e = Entry.objects.get(id=2)>>> e.blog # Returns the related Blog object.

修改e.blog并調用save方法存入數據庫

>>> e.blog = some_blog>>> e.save()

如果ForeignKey 字段有null=True 設置(即它允許NULL值),可以分配None來刪除對應的關聯性

>>> e = Entry.objects.get(id=2)>>> e.blog = None>>> e.save() # "UPDATE blog_entry SET blog_id = NULL ...;"

Django提供了一種使用雙下劃線__的查詢語法:

>>> Entry.objects.filter(blog__name='Beatles Blog')

反向查詢

被索引的關系模型可以訪問所有參照它的模型的實例,如Entry.blog作為Blog的外鍵,默認情況下

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陆川县| 嘉义市| 临沂市| 鄂托克旗| 金山区| 武义县| 仪陇县| 青岛市| 民乐县| 巢湖市| 武胜县| 保山市| 武清区| 东港市| 吉木乃县| 兴城市| 襄垣县| 理塘县| 武隆县| 杭锦后旗| 盈江县| 马公市| 竹山县| 蛟河市| 防城港市| 榆树市| 呼伦贝尔市| 安宁市| 恭城| 兴化市| 宣武区| 乌兰察布市| 武功县| 略阳县| 新乡市| 隆林| 伊宁市| 尚义县| 台东县| 和平区| 富源县|