django框架中的模型

文章目錄

    • 關聯關系
      • Many-to-one relationships
      • Many-to-many relationships?
    • django學習——model中的get和filter方法的區別

模型
模型是您的數據唯一而且準確的信息來源。它包含您正在儲存的數據的重要字段和行為。一般來說,每一個模型都映射一個數據庫表。

基礎:

  • 每個模型都是一個 Python 的類,這些類繼承 django.db.models.Model
  • 模型類的每個屬性都相當于一個數據庫的字段。
  • 綜上訴說,Django 給你一個自動生成訪問數據庫的 API;請參閱 進行查詢。

關聯關系

Many-to-one relationships

定義一個多對一的關聯關系,使用 django.db.models.ForeignKey 類。就和其他 Field 字段類型一樣,只需要在你模型中添加一個值為該類的屬性。

from django.db import models# Create your models here.
from django.db import models#多對一關系(如果一個 Car 模型 有一個制造者 Manufacturer --就是說一個 Manufacturer 制造許多輛車,但是每輛車都屬于某個特定的制造者)
class Manufacturer(models.Model):pass#....
class Car(models.Model):manufacturer = models.ForeignKey(Manufacturer,on_delete=models.CASCADE)#...

Many-to-many relationships?

定義一個多對多的關聯關系,使用 django.db.models.ManyToManyField 類。就和其他 Field 字段類型一樣,只需要在你模型中添加一個值為該類的屬性。

如果你只是想要一個類似于記錄披薩和配料之間混合和搭配的簡單多對多關系,標準的 ManyToManyField 就足夠你用了。然而,有的時候你可能會需要在兩個模型的關系中記錄更多的數據。

舉例來講,考慮一個需要跟蹤音樂人屬于哪個音樂組的應用程序。在人和他們所在的組之間有一個多對多關系,你可以使用 ManyToManyField 來代表這個關系。然而,你想要記錄更多的信息在這樣的所屬關系當中,比如你想要記錄某人是何時加入一個組的。

對于這些情況,Django允許你指定用于控制多對多關系的模型。你可以在中間模型當中添加而外的字段。在實例化 ManyToManyField 的時候使用 through 參數指定多對多關系使用哪個中間模型。對于我們舉的音樂家的例子,代碼如下:

from django.db import modelsclass Person(models.Model):name = models.CharField(max_length=128)def __str__(self):return self.nameclass Group(models.Model):name = models.CharField(max_length=128)members = models.ManyToManyField(Person, through='Membership')def __str__(self):return self.nameclass Membership(models.Model):person = models.ForeignKey(Person, on_delete=models.CASCADE)group = models.ForeignKey(Group, on_delete=models.CASCADE)date_joined = models.DateField()invite_reason = models.CharField(max_length=64)

具體的參考:
官方文檔:(https://docs.djangoproject.com/zh-hans/2.1/topics/db/models/#automatic-primary-key-fields)

django學習——model中的get和filter方法的區別

django的get方法是從數據庫的取得一個匹配的結果,返回一個對象,如果記錄不存在的話,它會報錯。

django的filter方法是從數據庫的取得匹配的結果,返回一個對象列表,如果記錄不存在的話,它會返回[]。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273776.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273776.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273776.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

虛擬主機TOMCAT配置

在tomcat中添加虛擬主機&#xff1a;   編輯"tomcat\conf\server.xml"&#xff0c;在"<Engine></Engine>"元素中新加子元素"<Host></Host>"&#xff0c;如下&#xff1a;  </Host>     <Host name&quo…

django框架中表單

參考官方文檔,太詳細了 (https://docs.djangoproject.com/zh-hans/2.1/topics/forms/)

鳥哥學習筆記六(基礎篇第十一章)

type:查看指令是否是bash內建指令 變量的設定規則 1. 變量與變量內容以一個等號『』來連結&#xff0c;如下所示&#xff1a; 『mynameVBird』 2. 等號兩邊不能直接接空格符&#xff0c;如下所示為錯誤&#xff1a; 『myname VBird』或『mynameVBird Tsai』3. 變量名稱只能…

django-models類索引外鍵時候的related_name屬性作用

其實可以就理解為,一對多關系拿對象的解決 可以把引用理解為主從關系 主引用從,即一對多 , 注意外鍵字段是放在多的一端的,比如一個班級class 有很多同學 students,那么就在students類里面設置class字段值是外鍵類型 從students拿class數據很好拿, studet.class就拿到了 但是從…

查找算法分析

參考&#xff1a; https://www.cnblogs.com/maybe2030/p/4715035.html#_label0

PPT設計里的小技巧

首先想說的是PPT設計&#xff0c;現在還是有很多人只把PPT當成一個存放文字和圖片的軟件&#xff0c;說的更直接點就是當是一個可以全屏放映內容的軟件。但是我想說的是PPT已經走向了設計類型的軟件&#xff0c;當Microsoft office Powerpoint2010正式版出來的時候這種感覺更盛…

PDFlib免費下載地址及詳細介紹手冊

PDFlib是一個用于創建PDF文檔的開發工具,也可直接在你的服務器端產生PDF輸出, 可利用PDFLib提供的簡單易用的API&#xff08;應用編程接口&#xff09;在服務器或客戶端產生PDF文檔, PDFlib在生成PDF文檔時不需要第3方軟件的支持,也不需要其它工具。此產品屬于產品 PDFlibPDI 的…

Hbase時間同步

如果Hbase的時間沒有同步&#xff0c;啟動主節點會起來&#xff0c;子節點的regionServer就不會起來。 錯誤日志如下&#xff1a; aused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ClockOutOfSyncException): org.apache.hadoop.hba…

高德地圖AmapSDKDemo運行

①file/new/other/androd Application Poject&#xff0c;選擇SDKDemo&#xff0c;復制到workspace ②申請amap的key&#xff0c;名字在res/values/strings/的demo_title&#xff1a;為AMapsD Demo ③run-as可以在模擬器里也可以在手機上。 轉載于:https://www.cnblogs.com/jzz…

GCD,大家都知道的回顧

GCD&#xff0c;自iOS4.0吧&#xff0c;比block還要早&#xff0c;他的用處主要是體現在線程方面&#xff0c;比如你有個比較麻煩的而且循環比較大的代碼段什么&#xff0c;比如有個后臺下載什么的&#xff0c;這都必須放在子線程里一個放在子線程里執行&#xff0c;為了不影響…

對邏輯數據庫的操作

使用數據庫語言時&#xff0c;一定要注意以分號結尾( ;)1、創建數據庫CREATE DATABASE 數據庫名&#xff1b; CREATE DATABASE Scores;//創建指定名稱的數據庫&#xff0c;字符集使用的是“安裝數據庫時的指定的字符集”&#xff1b;CREATE DATABASE 數據庫名 CHARACTER SET 字…

數據庫---表的操作

1、創建表格式 &#xff1a; create table 表名(字段名1 類型(長度) 約束&#xff0c;字段名2 類型(長度) 約束&#xff0c;... ); 示例&#xff1a; CREATE TABLE stu(id INT PRIMARY KEY , #primary key&#xff1a;設置為主鍵&#xff0c;被修飾為主鍵的數據&#xff0c;不能…

auto_ptr解析

轉自 http://www.cppblog.com/SmartPtr/archive/2007/07/05/27549.htmlauto_ptr解析auto_ptr是當前C標準庫中提供的一種智能指針&#xff0c;或許相對于boost庫提供的一系列眼花繚亂的智能指針&#xff0c; 或許相對于Loki中那個無所不包的智能指針&#xff0c;這個不怎么智能…

Spring——自定義屬性編輯器+Bean的生存范圍+Bean的生命周期

一、自定義屬性編輯器&#xff08;一個類&#xff09;&#xff1a; 步驟&#xff1a; 1.寫一個類&#xff0c;這個類繼承PropertyEditorSupport。 2.重寫setAsText()方法。 3.在bean.xml文件中添加屬性編輯器的bean。 例子&#xff1a;點擊打開鏈接 二、Bean的生存范圍&#xf…

數據庫---增刪改查

1、添加數據INSERT INTO 表名(字段名1,字段名2...) values(值1,值2...); INSERT INTO newstu(id,name)values(12,胡歌);INSERT INTO 表名 values(值1&#xff0c;值2); INSERT INTO newstu values(12,胡歌); 注意&#xff1a; 值與字段必須一一對應&#xff0c;且個數相同&…

數據庫---查詢(詳細)

1、查詢 SELECT * FROM 表名 WHERE 條件&#xff1b; (1)、SELECT * FROM 表名&#xff1b;#查詢表內的所有數據 SELECT * FROM PRODUCT;(2)、SELECT 字段1&#xff0c;字段2... FROM 表名;#查詢表內的指定字段的數據 SELECT PIN,PRICE FROM PRODUCT; (3)、SELECT * FRO…

微信公眾平臺開發接口PHP SDK完整版

官方提供的SDK只有一個文本消息功能&#xff0c;我們將所有消息的消息類型及事件響應都整理了進來&#xff0c;并且加入日志記錄&#xff0c;代碼如下&#xff1a; 更新日志&#xff1a; 2013-01-01 版本1.02014-03-15 增加圖片、視頻、語音的內容回復2014-04-09 增加菜單鏈接事…

BZOJ3570 : DZY Loves Physics I

考慮兩個質量均為m&#xff0c;速度分別v1、v2的小球發生完全彈性碰撞的影響&#xff1a; 由動能守恒得&#xff1a; $\frac{1}{2}mv_1^2\frac{1}{2}mv_2^2\frac{1}{2}mv_1^2\frac{1}{2}mv_2^2$$v_1^2v_2^2v_1^2v_2^2$ 由動量守恒得&#xff1a; $mv_1mv_2mv_1mv_2$$v_1v_2v_1v…

數據庫---主鍵約束

1、設置主鍵約束(1)、方式一&#xff1a;創建表時&#xff0c;在字段在描述處聲明指定字段為主鍵&#xff1b; CREATE TABLE 表名(字段 類型(長度) PRIMARY KEY,字段 類型(長度) );CREATE TABLE STUDENT(STU_ID INT PAIMARY KEY,STU_NAME VARCHAR(255) );(2)、方式二&#xff1…

關于VS2010幫助文檔的使用和VC6.0在Win7 64位下的使用

由于購置了新的電腦&#xff0c;安裝的是Win7 64位的操作系統&#xff0c;這兩天我在重新安裝編程環境的時候遇到一些問題&#xff0c;現在都解決掉了&#xff0c;分享出來以供需要的人參考。 一、以前使用的是VS2008&#xff0c;從VC6到2008這么多年了一只使用的MSDN是帶索引的…