django之models學習總結

来源:https://www.cnblogs.com/506941763lcj/archive/2018/12/01/10048108.html
-Advertisement-
Play Games

from django.db import models # Create your models here. class Classes(models.Model): ''' 班級表 ''' title=models.CharField(max_length=32) m=models.ManyTo... ...


from django.db import models

# Create your models here.
class Classes(models.Model):
    '''
    班級表
    '''
    title=models.CharField(max_length=32)
    m=models.ManyToManyField('Teachers')

'''
obj=models.Classes.objects.filter(id=1).first()
obj.m.add(1)  代表創建班級id=1 老師Id=1數據對象
obj.m.add(2)  代表創建班級id=1 老師Id=2數據對象
 
obj=models.Classes.objects.filter(id=2).first()
obj.m.add(1)  代表創建班級id=2 老師Id=1數據對象
obj.m.add(2)  代表創建班級id=2 老師Id=2數據對象
obj.m.add([2,3])  代表創建班級id=2 老師id=2 id=3數據對象

'''
class Teachers(models.Model):
    '''
    老師表
    '''
    '''-----------單表-----------------
    每個數據對象在資料庫中會有一列自增的ID
    一、創建數據對象(增)
    創建數據對象的兩種方法
    1.models.Teachers.objects.create(name='xx')
    
    
    2.obj=Teachers(name='xx')
      obj.save()
      
      
      二、獲取數據對象(查)
      models.Teachers.objects.all() //獲取所有對象
      models.Teachers.objects.filter(id=1)//獲取某個對象
      models.Teachers.objects.filter(id=1,name='xx')
      models.Teachers.objects.filter(id__gt=1)//獲取ID大於等於1的對象
      models.Teachers.objects.filter(id__gt=1).first()//獲取ID大於等於1的對象中的第一個
      models.Teachers.objects.all()[:10] 切片操作,獲取10個人,不支持負索引,切片可以節約記憶體
      三、刪除數據對象(刪)
      models.objects.Teachers.filter(id=1).delete()//刪除ID=1對象
      
      四、修改數據對象
      models.Teachers.objects.all().update(name='xx')
      models.Teachers.objects.filter(id=1).update(name='xx')//有過濾條件的修改
    '''

    name=models.CharField(max_length=32)

class Student(models.Model):
    '''
    學生表
    '''

    username=models.CharField(max_length=32)
    age=models.IntegerField()
    gender=models.BooleanField()
    cs=models.ForeignKey(Classes,on_delete=models.CASCADE) #ForeignKey約束的對象在資料庫中會自帶下劃線__id,此處的cs 裡面包含id 和title


    '''
    學生對象在資料庫中右5列標識

    id     username        age      gender      cs__id
    
    
    1.創建數據對象(增)
    models.Students.objects.create(username='xx',age=20,gender='男',cs__id=1)
    models.Students.objects.create(username='xx',age=20,gender='男',cs=models.Class.objects.filter(id=1).first())
    班級:
    Id     title
    1     軟體工程
    2     嵌入式班
    3     大數據班
    Students類中的cs代表是班級里的一行數據:如:1 軟體工程(即:id和title),若要取班級的中ID或title中的一項,
    需要採用cs__id或cs__title
    2.查詢數據(查)
    res=models.Students.objects.all() //獲取的是多條數據
    for item in  res:
        print(item.id)
        print(item.username)
        print(item.age)
        print(item.gender)
        print(item.cs__id)  
        print(item.cs.id)   #for迴圈跨表的時候可以使用cs__id或cs.id 
        print(item.cs__title)
        print(item.cs.title)
        
    3.刪除(刪)
    
    models.Students.objects.filter(id=1).delete()
    models.Students.objects.filter(cs__id=1).delete()
    models.Students.objects.filter(username='xxx').delete()
    
    
    cid=input('請輸入班級ID')
    models.Students.objects.filter(cs__id=cid).delete()
    ctitle=input('請輸入班級名稱')
    models.Students.objects.filter(cs__title=ctitle).delete()
    models.Students.objects.filter(cs.title=ctitle).delete() 
    #cs.title=ctitle不成立,for迴圈中可以使用cs__id或cs.id,但是此處只能使用cs__id
    
    
    4.修改數據(改) 
    
    models.Students.objects.filter(id=1).update(username='xxx')
    
    '''

#多對多
'''
班級:
Id   title
1    網路1班
2    軟體1班

老師:
Id      name
1       Lee
2       Mark
3       Amie

老師--班級關係對應表(類   隱藏的多對多數據表)
id    TeacherID    ClassId
1        1            2
1        1            2
2        2            1
2        2            1

'''

'''
總結:
1.models中的一個類代表數庫中的一個表,類中的一個對象代表數據表中的一行記錄
2.Fk欄位代表關聯表中的一行數據
3.manyTomany欄位,自動生成第三表,依賴關聯表對第三張表進行操作。
'''

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.js操作css的樣式 div.style.width="100px"在div標簽內我們添加了一個style屬性,並設定了width值。這種寫法會給標簽帶來大量的style屬性,跟實際項目不符。 我們沒有讓css和html分離 所以如果為了獲取css樣式 window.getComputedSty ...
  • 在進行視窗的resize、scroll,輸入框內容校驗等操作時,如果事件處理函數調用的頻率無限制,會加重瀏覽器的負擔,導致用戶體驗非常糟糕。此時我們可以採用debounce(防抖)和throttle(節流)的方式來減少調用頻率,同時又不影響實際效果。 函數防抖 函數防抖(debounce):當持續觸 ...
  • 自己記不住,列一下關於CSS和JS中用到的各類有關Height和Width屬性的介紹對比. 1.除非調整顯示器的解析度,否則這個值可以看作常量,不會發生變化。 2.顯示器的解析度與瀏覽器設置無關,縮放網頁並不會改變解析度。 如果有錯誤,麻煩您指出,相互學習. 謝謝~~ ...
  • 在執行 npm run dev 的時候 根據script/config.js 文件中的配置 'web-full-dev': { entry: resolve('web/entry-runtime-with-compiler.js'), dest: resolve('dist/vue.js'), fo ...
  • 1.針對錶單的 form 表單 input 輸入框 select 下拉列表 textarea 文本域 type 類型 radio 單選框 checkbox 多選框 password 密碼框 button 普通按鈕 text 文本框標簽 submit 提交按鈕 reset 重置 表單的事件: onch ...
  • Progress進度條組件 html <! 最外層 <! 線形進度條 <! 進度條外部背景;strokeWidth:文檔中說是寬度,這裡是高度呀 <! 進度條內部百分比 <! 線形進度條內部文字 {{percentage}}% <! 環形進度條 <! 進度條外面文字內容 <! 進度條當前狀態stat ...
  • 1.針對錶單的 form input select textarea type=”radio/checkbox/password/button/text/submit/reset/” 表單的事件 onchange 當表單內容被修改時觸發的事件 onfocus 獲取焦點事件 onblur 失去焦點事件 ...
  • 還原車禍現場 功能類似於百度搜索,搜索框輸入內容,下拉框顯示候選項,點擊候選項就選擇候選項,然後下拉框隱藏,點擊外面就直接隱藏下拉框,於是我寫了以下代碼 先去請求數據,然後渲染列表,然後監聽候選項點擊,最後blur的時候隱藏下拉框,覺得自己寫的很完美,於是便興衝衝的去測試,但是一測試我發現了大問題, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...