国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

理解Django中的數據庫關系

譯文
數據庫 其他數據庫
處理好表關系是創建可靠數據模型的關鍵。

譯者 | 布加迪

審校 | 孫淑娟

數據庫關系描述不同數據庫表之間的關系。這種關系決定了如何存儲和檢索數據。Django支持數據庫表關系,非常適用于關系數據庫系統(RDBMS)。

關系類型有賴于應用程序的需求及其建模的數據。Django模型與數據庫之間的良好關系改善了數據維護,這包括改進查詢性能和減少數據重復。

您可以通過探究三種主要類型的關系,了解Django數據庫關系如何影響應用程序性能。

一、數據庫關系

關系數據庫系統支持三種類型的數據庫關系:一對多關系、多對多關系和一對一關系。數據庫關系的類型影響應用程序的用例。

Django模型代表應用程序中的數據庫表。想創建良好的數據庫系統,必須在表之間建立良好的關系。數據庫關系決定著如何在應用程序中存儲和顯示數據。

想了解數據庫關系,不妨先創建一個名為Hoods的Django項目。該應用程序將是一個社區社交網絡,它將管理各個社區的社交活動、安全和企業。

居民可以注冊、登錄和創建個人資料。他們還可以創建貼子和商業廣告,所有人都能看到。

先創建一個數據庫來存儲社區的所有數據。然后,您將創建Profile(個人資料)、NeighborHood(社區)、Business(企業)和Post(帖子)等模型。想創建模型,必須確定數據庫表所需的關系。

二、一對一數據庫關系

一對一關系意味著一個Django模型中的記錄與另一個模型中的另一個記錄相關聯。這兩個記錄相互依賴。在這種情況下,Profile模型依賴User模型來創建居民的個人資料。

因此,每個在該應用程序上注冊的居民只能有一份個人資料。此外,沒有用戶,個人資料就沒法存在。

from django.db import models
from django.contrib.auth.models import User

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
name = models.CharField(max_length=80, blank=True)
bio = models.TextField(max_length=254, blank=True)
profile_picture = CloudinaryField('profile_picture', default='default.png')
location = models.CharField(max_length=50, blank=True, null=True)
email = models.EmailField(null=True)

def __str__(self):
return f'{self.user.username} profile'

Django的用戶模型是Django中內置的驗證模型,不必為它創建一個模型。相反,從django.contrib.auth中導入它。Profile模型上的OneToOneField()定義了一對一關系。

on_delete=models.CASCADE變量防止刪除其中一條記錄。您必須從兩個表中刪除記錄。

您可以使用Django管理界面在應用程序中直觀顯示這些關系。想登錄到Django管理界面,必須注冊一個管理員用戶,即超級用戶。

在終端運行以下命令,創建一個超級用戶:python manage.py createsuperuser

將提示您輸入用戶名、電子郵件和密碼。完成這些操作后,啟動服務器。

在瀏覽器中使用URL http://127.0.0.1:8000/admin,打開管理頁面。

您將看到管理頁面,可以使用之前創建的憑據來登錄。登錄后,您將看到Groups對象和Users對象。Django身份驗證框架管理這兩個模型。在底部,您將看到Profile模型。

打開Profile模型,繼續添加個人資料。您看到它如下所示:

圖片

圖1

注意,您可以選擇為用戶創建個人資料。OneToOneField()數據類型讓您可以為經過身份驗證的用戶創建個人資料。這就是該應用程序管理一對一關系的方式。

三、一對多數據庫關系

一對多關系意味著模型中的一條記錄與另一個模型中的多條記錄相關聯,它也被稱為多對一關系。

在本例中,一個管理員可以創建多個社區。但每個社區只能屬于一個管理員。您可以使用ForeignKey數據類型來定義這類關系。

Django有內置的管理界面,不必為它創建一個模型。管理員有權從管理面板管理內容和直觀顯示該應用程序。

容納許多記錄的模型將擁有ForeignKey。它將關系定義為一對多關系。下列代碼顯示了將密鑰放在哪里。

class NeighbourHood(models.Model):
admin = models.ForeignKey("Profile", on_delete=models.CASCADE, related_name='hood')
name = models.CharField(max_length=50)
location = models.CharField(max_length=60)
hood_logo = CloudinaryField('hood_logo', default='default.png')
description = models.TextField()
health_tell = models.IntegerField(null=True, blank=True)
police_number = models.IntegerField(null=True, blank=True)
Count= models.IntegerField(null=True, blank=True)

def __str__(self):
return f'{self.name} hood'

您可以在該應用程序上看到如下圖所示的關系:

圖片

圖2

NeighborHood模型現在有一個管理員。任何人想創建一個社區,都必須擁有管理權限。一個社區不能擁有多名管理員。

四、多對多數據庫關系

在多對多關系中,一個模型中的多個記錄與另一個模型中的其他記錄相關聯。比如說,Post模型和Business模型可以擁有彼此的多個記錄。用戶可以在他們的帖子中創建多個商業廣告,反之亦然。

然而,創建多對多關系可能導致數據不準確。在其他框架中,您必須創建一個新表來連接這兩個表。

為此,Django有一個解決辦法。當您使用多對多字段時,它將創建一個新表將兩個表映射到一起。您可以將多對多字段放到兩個模型中的任意一個中,但不應該同時放在兩個模型中。

class Post(models.Model):
title = models.CharField(max_length=120, null=True)
post = models.TextField()
date = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='post_owner')
hood = models.ForeignKey(NeighbourHood, on_delete=models.CASCADE, related_name='hood_post')
business = models.ManyToManyField(Business)

def __str__(self):
return f'{self.title} post'

現在,當您在管理面板上查看Post模型時,可以將幾家企業附加到一個帖子上。

圖片

圖3

五、Django簡化數據庫關系

為應用程序使用的數據庫類型決定了如何利用數據。Django有一個全面的系統,使連接和操作關系數據庫變得很容易。

Django的特性使得從相關表中存儲和檢索數據變得很容易。它有內置的API,可以為應用程序連接和創建數據庫關系。

數據庫關系決定著應用程序的行為。使用一對一關系、一對多關系還是多對多關系,則取決于您自己。

使用Django,您可以在不破壞應用程序的情況下配置和測試特性。可以使用Django來保護數據庫系統,并優化開發者體驗。

原文鏈接:https://www.makeuseof.com/django-database-relationships/

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2011-06-07 17:14:15

關系型數據庫壓縮技術

2011-07-18 09:54:47

云計算分片關系數據庫關系數據庫

2011-03-15 11:19:45

DB2數據庫catalog

2011-03-24 17:49:47

數據庫恢復

2021-09-06 10:24:12

鴻蒙HarmonyOS應用

2011-10-11 17:07:12

數據庫Internet文件數據庫

2009-03-26 09:58:55

云計算關系型數據庫關系數據庫

2020-03-14 16:37:09

數據庫IT技術

2011-04-13 16:13:53

云計算關系型數據庫

2010-09-15 14:09:01

GraphDataba

2021-09-03 15:41:00

鴻蒙HarmonyOS應用

2024-06-06 16:50:15

2023-10-16 13:26:00

RDBMS關系數據庫

2018-07-18 09:16:39

關系型非關系型數據庫

2010-04-15 12:53:42

Oracle數據庫

2016-08-23 14:25:19

MySQL約束數據庫

2011-04-14 09:46:12

DB2數據庫catalog

2020-05-07 18:39:15

數據庫閉源開源

2018-03-26 12:58:52

數據庫OracleMySQL

2011-05-13 13:38:49

數據庫對象
點贊
收藏

51CTO技術棧公眾號

天堂久久一区二区三区| 91日韩精品一区| 色婷婷综合成人av| 韩国福利在线| 国产精品美女久久久久久久久久久 | 99精品国产高清在线观看| 风间由美性色一区二区三区四区 | 国产精品久久一区二区三区| av一区在线| 制服丝袜日韩国产| 欧美成人综合在线| 亚洲成人在线网站| 一级黄色av| 亚洲精品成人精品456| 日本美女高潮视频| 中文字幕+乱码+中文字幕一区| 丰满少妇久久久| 成人精品高清在线| 国产毛片视频网站| 99久久伊人久久99| 成人观看免费完整观看| 丁香一区二区三区| 成人综合视频在线| 国产日韩欧美激情| av电影资源| 一区二区三区视频在线看| 69ww免费视频播放器| 亚洲欧美区自拍先锋| 在线观看成年人视频| 五月婷婷久久丁香| 四虎在线免费观看| 欧美性xxxxx极品少妇| 亚洲成人套图| 欧美丝袜第三区| gogo在线观看| 精品在线小视频| 欧美综合社区国产| 97视频国产在线| 欧美日韩水蜜桃| 国产一区二区三区色淫影院| 青青草国产精品97视觉盛宴| 9l视频自拍9l视频自拍| 99久久综合精品| 伊人资源视频在线| 欧美亚洲动漫另类| 不卡av播放| 久久久中精品2020中文| 久久综合88| 天堂资源在线亚洲视频| 国产美女一区二区| 91人人澡人人爽人人精品| 一卡二卡欧美日韩| 欧美极品视频| 在线观看精品国产视频| 亚洲综合小说图片| 欧美三级网色| 久久精品一区二区三区四区| 在线看黄的网站| 亚洲第一天堂无码专区| 日本一区二区三区播放| 91视频-88av| 精品一区二区三区的国产在线播放| 自慰无码一区二区三区| 亚洲午夜在线观看视频在线| 免费av网站在线观看| 久久伊人免费视频| 国产精品va| 国产成人av影视| 91精品国产综合久久福利软件| 亚洲国产天堂| 国产精品一区视频网站| 99久久精品国产观看| 韩国三级在线观看久| 尤物九九久久国产精品的特点| 日韩一区电影| 男女日批视频在线观看| 亚洲成a人v欧美综合天堂下载| 欧亚av在线| 91久久精品美女| 91在线国产福利| 超碰免费在线播放| 国产精品久久网| k8久久久一区二区三区 | 欧美经典一区二区| av在线看片| 国产精品r级在线| 国产成人在线视频网站| 男人天堂网在线观看| 久久国产精品首页| 天堂久久久久va久久久久| www亚洲天堂| 亚洲精品大尺度| 99国产**精品****| 黄色高清无遮挡| 国产视频亚洲精品| 一本色道88久久加勒比精品| xxxx影院| 精品国产一区二区三区四区在线观看| 亚洲精品欧美| 成人在线观看视频app| 色系列之999| 久久精品盗摄| 亚洲成人男人天堂| 亚州精品天堂中文字幕| 理论片日本一区| 91亚洲精选| 成人免费网站在线| 亚洲私人影院在线观看| 未满十八勿进黄网站一区不卡| 日产国产精品精品a∨| 色呦呦国产精品| 九九热精品视频在线观看| 欧美精品一区免费| 亚洲人成在线观看| 老司机精品视频导航| 好吊日视频在线观看| 亚洲综合在线做性| 亚洲一区影音先锋| 亚洲第一二三区| 久热精品在线观看视频| 久久久av亚洲男天堂| 国产mv日韩mv欧美| 中文在线а√在线8| 先锋在线资源一区二区三区| 在线不卡免费欧美| 99精品国产在热久久婷婷| 第一福利在线| 91免费精品视频| 欧美日韩在线免费| 欧美成人69av| 国产毛片av在线| 国产精品一区二区三区在线| 色8久久精品久久久久久蜜| 97人人精品| 日本在线丨区| 亚洲精品免费av| 欧美日本在线播放| 精品日韩一区| 亚洲国产99| 99亚洲伊人久久精品影院| 国产成人精品亚洲日本在线桃色| 第一福利在线| 2020国产精品久久精品不卡| 一区二区三区在线观看国产| 亚洲涩涩av| 美女的诞生在线观看高清免费完整版中文 | 黄色片在线免费看| 97在线中文字幕| 精品视频在线免费| 久久一二三区| 欧洲亚洲两性| 日本一极黄色片| 欧洲一区二区视频| 欧美日韩国产一区二区三区| 国产欧美精品aaaaaa片| 亚洲美女视频网站| av电影一区二区| 群体交乱之放荡娇妻一区二区| 最大av网站| 国产精品v欧美精品v日韩| 欧美一级日韩免费不卡| 精品一区二区三区的国产在线播放| 一根才成人网| 国产日韩成人内射视频| 国产精品aaaa| 51久久夜色精品国产麻豆| 激情国产一区二区| 草草视频在线一区二区| 中文在线a在线| 涩涩涩999| 欧美激情免费在线| 欧洲精品在线观看| 懂色一区二区三区免费观看 | 免费黄色网页| 六月婷婷久久| 欧美精品在线看| 欧美在线一区二区| 成人av在线影院| 成人动漫免费在线观看| 激情成人四房播| 亚洲午夜无码av毛片久久| 国产精品久久77777| 欧美xingq一区二区| 国产三级欧美三级| 亚洲第一伊人| 久蕉依人在线视频| 亚洲狼人综合| 成人羞羞视频免费看看| 国产精品乱子乱xxxx| 日韩精品丝袜在线| 亚洲欧美影音先锋| 夜夜嗨一区二区| av日韩一区| 国产在线三区| 国产乱淫av片杨贵妃| 国产精品久久久久久久久久久新郎| 欧美一区二区在线观看| 国产日韩欧美精品一区| 亚洲视频久久| 香蕉久久一区|