Django 一對一關系

作用:

  • 兩個數據庫表建立外鍵關系
  • 當外鍵表的數據被刪除時,主表的數據也會一并刪除。

1,添加表模型

Test/app8/views.py
from django.db import modelsclass User(models.Model):username = models.CharField(max_length=50, unique=True)email = models.EmailField(unique=True)password = models.CharField(max_length=128)  # 使用哈希存儲密碼first_name = models.CharField(max_length=60)last_name = models.CharField(max_length=50)# 添加其他字段,例如:# age = models.IntegerField()# bio = models.TextField()# ...class Meta:db_table = 'users2'def __str__(self):return self.usernameclass Person(models.Model):name = models.CharField(max_length=100)age = models.IntegerField()def __str__(self):return self.nameclass Passport(models.Model):person = models.OneToOneField(Person, on_delete=models.CASCADE)passport_number = models.CharField(max_length=20)issue_date = models.DateField()def __str__(self):return f"{self.passport_number} - {self.person.name}"

2,執行遷移命令

python manage.py makemigrations app8
python manage.py migrate app8

?使用遷移命令會生成Person和Passport兩個張模型表,Passport表中生成一個外鍵,命名為person_id

3,執行測試腳本增加數據庫表實例

Test/scripts.py

# create_instances.pyimport os
import django
from datetime import date# 設置 Django 環境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Test.settings')
django.setup()from app8.models import Person, Passport# 創建一個 Person 實例
person = Person.objects.create(name="test2", age=30)# 創建一個 Passport 實例,并關聯到上面的 Person 實例
passport = Passport.objects.create(person=person, passport_number="A12345678", issue_date=date(2023, 6, 30))# 打印結果
print(f"Created Person: {person.name}, Age: {person.age}")
print(f"Created Passport: {passport.passport_number}, Issue Date: {passport.issue_date}")

分別執行腳本,創建了兩條數據?

?

4,添加視圖函數

Test/app8/views.py

from django.shortcuts import render
from .models import Userdef create_user(request):if request.method == 'POST':username = request.POST.get('username')email = request.POST.get('email')# ... 獲取其他字段的值# 創建用戶實例user = User(username=username,email=email,# ... 填充其他字段)user.save()  # 保存到數據庫# ... 處理成功或失敗的邏輯return render(request, '8/1.html')from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from app8.models import Person, Passportdef delete_person(request, person_id):person_to_delete = get_object_or_404(Person, id=person_id)person_to_delete.delete()return HttpResponse("Person and associated Passport have been deleted.")

5,添加路由地址

from django.urls import path
from . import viewsurlpatterns = [path('create_user', views.create_user, name='create_user'),path('delete_person/<int:person_id>/', views.delete_person, name='delete_person'),]

6,訪問頁面,刪除person數據示例

http://127.0.0.1:8000/app8/delete_person/2/

查看數據庫,app8_passport,app8_person表,person_id?為2的數據被刪除了

?

?通過對比數據可以看到,通過路由傳遞的person_id為2時,數據庫app8_passport表對應的person_id為2的數據被刪除了,app8_person表id為2的數據也一并被刪除了。

本文已有實現刪除數據示例,以下是插入數據,展示數據示例補充內容:

Django 模型創建的兩表插入數據-CSDN博客

Django 頁面展示模型創建表的數據-CSDN博客

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

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

相關文章

【代碼隨想錄訓練營】【Day 65】【圖論-2】| 卡碼 99

【代碼隨想錄訓練營】【Day 65】【圖論-2】| 卡碼 99 需強化知識點 深度搜索和廣度搜索 題目 99. 島嶼數量 思想&#xff1a;遍歷到為1的節點&#xff0c;再搜索標記&#xff0c;每遇到新的陸地節點&#xff0c;增加計數 深度搜索廣度搜索&#xff1a;此處用 [] 作為待遍…

前端面試必備:深入解析Vue.js中v-if與v-show的原理與應用

前言 在Vue.js中&#xff0c;條件渲染是一個核心的概念&#xff0c;它允許我們根據數據的狀態來動態地顯示或隱藏元素。v-if和v-show是Vue.js提供的兩個最常用的條件渲染指令&#xff0c;它們在表面上看起來很相似&#xff0c;但實際上在背后的工作原理和適用場景上有著顯著的…

2024年度濰坊市職業技能大賽 —網絡搭建(網絡與信息安全管理員)職業技能競賽賽項規程

2024年度濰坊市職業技能大賽 —網絡搭建&#xff08;網絡與信息安全管理員&#xff09;職業技能競賽賽項技術文件................................ 一、賽項簡介...................................... 3 二、競賽規程...................................... 3 &#xff08…

【Linux系統】進程替換 自主實現shell(簡易版)

1.先看代碼 && 現象 我們用exec*函數執行新的程序&#xff0c; exec*系列的函數&#xff0c;執行完畢后&#xff0c;后續的代碼不見了&#xff0c;因為被替換了。 execl的返回值可以不關心了&#xff0c;只要替換成功&#xff0c;就不會向后繼續運行&#xff0c;只要…

第5講:建立自己的C函數庫,js調用自己寫的C/C++函數,并包含依賴C/C++第三方靜態庫。

在javascript中&#xff0c;Array有很多內置的功能&#xff0c;比如Array.map&#xff0c;Array.filter&#xff0c;Array.find等等&#xff0c;能用內置的功能就用內置的功能&#xff0c;最好不要自己實現一套&#xff0c;因為底層調用的可能壓根就不是js語言本身&#xff0c;…

[AIGC] awk 和 sed

在Unix系統中&#xff0c;有兩種強大的用于文本操作的命令工具&#xff0c;它們就是awk和sed。這兩個命令工具是每個Linux用戶必備的知識之一&#xff0c;尤其對于需要進行文本處理或數據抽取的開發者來說&#xff0c;更加重要。 在實際開發過程中&#xff0c;我們常常需要處理…

JavaScript中的hasOwnProperty方法詳解

JavaScript中的hasOwnProperty方法詳解 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 什么是hasOwnProperty方法&#xff1f; 在JavaScript中&#xff0c;h…

Wails 安裝初體驗

文章目錄 Wails 安裝說明1. 系統要求2. 安裝步驟3. 構建應用 結論 Wails 安裝說明 Wails 是一個用于構建桌面應用的 Go 框架&#xff0c;結合了現代前端技術。以下是安裝步驟&#xff1a; 1. 系統要求 Go 1.16 或更高版本Node.js 和 npm可選&#xff1a;適用于 Windows、mac…

【機器學習】機器學習的重要方法——強化學習:理論,方法與實踐

目錄 一、強化學習的核心概念 二、強化學習算法的分類與示例代碼 三.強化學習的優勢 四.強化學習的應用與挑戰 五、總結與展望 強化學習&#xff1a;理論&#xff0c;方法和實踐 在人工智能的廣闊領域中&#xff0c;強化學習&#xff08;Reinforcement Learning, RL&…

轉自羅翔老師的畢業寄語(二)

其實我很想祝大家一帆風順&#xff0c;可是我覺得這不現實。 智者說人這一生至少有三件事是無法避免的&#xff0c;一個是苦難&#xff0c;一個是邪惡&#xff0c;還有一個是人生的終點。所以真的愿我們每時每刻都在當下存儲足夠美好的記憶去對抗人生不期而至的苦楚&#xff0c…

基于源碼詳解ThreadPoolExecutor實現原理

個人博客地址 基于源碼詳解ThreadPoolExecutor實現原理 | iwts’s blog 內容拆分 這里算是一個總集&#xff0c;內容太多&#xff0c;拆分成幾個比較重要的小的模塊&#xff1a; ThreadPoolExecutor基于ctl變量的聲明周期管理 | iwts’s blog ThreadPoolExecutor 工作線程…

模板方法模式在金融業務中的應用及其框架實現

引言 模板方法模式&#xff08;Template Method Pattern&#xff09;是一種行為設計模式&#xff0c;它在一個方法中定義一個算法的框架&#xff0c;而將一些步驟的實現延遲到子類中。模板方法允許子類在不改變算法結構的情況下重新定義算法的某些步驟。在金融業務中&#xff…

可信和可解釋的大語言模型推理-RoG

大型語言模型&#xff08;LLM&#xff09;在復雜任務中表現出令人印象深刻的推理能力。然而&#xff0c;LLM在推理過程中缺乏最新的知識和經驗&#xff0c;這可能導致不正確的推理過程&#xff0c;降低他們的表現和可信度。知識圖譜(Knowledge graphs, KGs)以結構化的形式存儲了…

基于lightgbm hyperopt的旋轉機械故障診斷(Python)

前置文章&#xff1a; 將一維機械振動信號構造為訓練集和測試集&#xff08;Python&#xff09; https://mp.weixin.qq.com/s/DTKjBo6_WAQ7bUPZEdB1TA 旋轉機械振動信號特征提取&#xff08;Python&#xff09; https://mp.weixin.qq.com/s/VwvzTzE-pacxqb9rs8hEVw import…

Python變量的命名規則與賦值方式

第二章&#xff1a;Python 基礎語法 第一節&#xff1a;變量的命名規則與賦值方式 2.1.1 引言 在編程中&#xff0c;變量是存儲數據的基本單元。變量的命名和賦值是編程語言中表達和操作數據的基礎。了解和遵循變量命名規則對于編寫清晰、可維護的代碼至關重要。 2.1.2 變量…

【linux】網絡基礎(1)

文章目錄 網絡基本概念網絡的定義網絡的類型局域網&#xff08;LAN&#xff09;廣域網&#xff08;WAN&#xff09; 網絡協議OSI七層模型TCP/IP模型TCP/IP模型的結構 網絡傳輸的基本流程計算機與計算機之間的通信計算機的信息處理封裝報頭 網絡基本概念 網絡的定義 1.網絡是指…

專題一: Spring生態初探

咱們先從整體脈絡上看下Spring有哪些模塊&#xff0c;重要的概念有個直觀印象。 從Spring框架的整體架構和組成對整體框架有個認知。 Spring框架基礎概念 Spring基礎 - Spring和Spring框架組成 上圖是從官網4.2.x獲取的原圖&#xff0c;目前我們使用最廣法的版本應該都是5.x&am…

GitHub每日最火火火項目(6.30)

項目名稱&#xff1a;modelscope / DiffSynth - Studio 項目介紹&#xff1a;該項目致力于讓用戶體驗擴散模型的神奇魅力。擴散模型是一種具有廣泛應用前景的技術&#xff0c;在圖像生成、音頻處理等領域展現出了強大的能力。通過DiffSynth - Studio&#xff0c;用戶可以深入探…

Arrays.asList 和 java.util.ArrayList 區別

理解 Java 中的 Arrays.asList 和 java.util.ArrayList 的區別 在 Java 編程中&#xff0c;Arrays.asList 方法和 java.util.ArrayList 是兩種常用的處理列表數據的方式。雖然它們在功能上看起來相似&#xff0c;但在內部實現和使用上有著本質的不同。本文將探討這兩種方式的區…

一區算法MPA|海洋捕食者算法原理及其代碼實現(Matlab/Python))

Matlab/Python&#xff1a; 本文KAU將介紹一個2020年發表在1區期刊ESWA上的優化算法——海洋捕食者算法 (Marine Predators Algorithm&#xff0c;MPA)[1] 該算法由Faramarzi等于2020年提出&#xff0c;其靈感來源于海洋捕食者之間不同的覓食策略、最佳相遇概率策略、海洋記…