資料庫表關係 多對多的三中方式

2022-07-30 07:00:10 字數 3866 閱讀 8414

1、第一種django orm在建立表的時候自動幫我們建立表關係

from django.db import models

# create your models here.

#建立book表

class book(models.model):

name=models.charfield(max_length=32)

# 第一種方式,系統幫我們自動建立了表book與表author關係

authors=models.manytomanyfield(to='author')

#建立作者表

class author(models.model):

name=models.charfield(max_length=32)

表book_authors就是系統自動建立出來的用來關聯author和book表

2、第二種純手動建立關係表(第三張表)

from django.db import models

# create your models here.

#建立book表

class book(models.model):

name=models.charfield(max_length=32)

# # 第一種方式,系統幫我們自動建立了表book與表author關係

# authors=models.manytomanyfield(to='author')

#建立作者表

class author(models.model):

name=models.charfield(max_length=32)

class book2author(models.model):

book=models.foreignkey(to='book')

author=models.foreignkey(to='author')

info=models.charfield(max_length=32)

手動建立關係表的好處是可以在關係表中建立自定義字段;缺點就是不能使用orm

3、第三種半自動建立第三種表(可擴充套件姓高,符合orm查詢)

from django.db import models

# create your models here.

#建立book表

class book(models.model):

name=models.charfield(max_length=32)

# # 第一種方式,系統幫我們自動建立了表book與表author關係

# authors=models.manytomanyfield(to='author')

authors=models.manytomanyfield(to='author',through='book2author',through_fields=('book','author'))

#建立作者表

class author(models.model):

name=models.charfield(max_length=32)

# books=models.manytomanyfield(to='book',through='book2author',through_fields=('author','book'))

class book2author(models.model): book=models.foreignkey(to='book') author=models.foreignkey(to='author') info=models.charfield(max_length=32)
半自動方式關係表需要自己建立,可以自定義字段,可以符合orm查詢

通過orm查詢資料:

from django.test import testcase

# create your tests here.

import os

import sys

if __name__ == "__main__":

os.environ.setdefault("django_settings_module", "test01.settings")

import django

django.setup()

# 查詢書籍中對應的作者

res = models.book.objects.filter(pk=1).values('authors__name') #基於下劃線

print(res)

book_obj=models.book.objects.filter(pk=1).first()

res=book_obj.authors.all()

print(res)

前後端資料傳輸編碼格式contenttype

urlencoded

對應的資料格式:name=jason&password=555

後端獲取資料:request.post

注意:django會將urlencoded編碼的資料解析自動放到request.post

formdata:

form表單傳輸檔案的編碼格式

後端獲取檔案格式資料:request.files

後端獲取普通鍵值對資料:request.post

ajax傳送json格式資料

需要注意的是:編碼與資料格式要保持一直

ajax

1、前端有哪些方式可以朝後端發請求

瀏覽器視窗手動輸入**  get請求

a標籤的href屬性      get請求

form表單          get/post請求(預設是get請求)

ajax            get/post請求

2、ajax特點:

非同步提交

區域性重新整理

3、ajax基本語法

提交的位址(url)

提交的方式(type)

提交的資料(data)    

**函式(success)

$('#d1').click(function () ,

// **函式

success:function (data)

})})

4、ajax預設傳輸資料的編碼格式也是urlencoded

5、前端後端傳輸資料,資料是什麼格式就應該告訴別人是什麼格式(資料與編碼要一一對應)

ajax傳輸json格式資料

# 自動補全當前路徑

自定義分頁器

頁碼的渲染通常都是單數1,3,5,7,9,符號中國人的審美標準

需要完善的

1.加首頁和尾頁

2.頁碼的個數應該是固定的

自定義分頁器的使用

後端:book_list = models.book2.objects.all()

# 資料總條數

all_count = book_list.count()

# 當前頁

current_page = request.get.get('page',1)

# 示例乙個分頁器物件

page_obj = my_page.pagination(current_page=current_page,all_count=all_count)

# 對總資料進行切片

page_queryset = book_list[page_obj.start:page_obj.end]

前端:} # 幫你渲染的是帶有bootstrap樣式的分頁器

資料庫 表關係 多對一

如何確定表之間的關係 需要從實際需求中分析 第一步 從員工的角度來考慮 多個員工是不是可以屬於同乙個部門?員工的多條記錄是否對應部門的一條記錄?如果是 則可以確定 員工與部門是多對一 第二步 從部門的角度來考慮 多個部門是不是可以有同乙個員工?員工部門多條記錄是否對應員工的一條記錄?都不是 而是乙個...

flask 定義資料庫關係(多對多)

多對多 我們使用學生和老師來演示多對多關係 每個學生有多個老師,每個老師有多個學生。多對多關係示意圖如下 在例項程式中,student類表示學生,teacher類表示老師。在這兩個模型之間建立多對多關係後,我們需要在student類中新增乙個集合關係屬性teachers,呼叫它可以獲取某個學生的多個...

資料庫表多對多的設計

先上問題!現在有a b c三張表,a和b是一對多的關係,b和c是一對一的關係,c和b是一對多的關係,a和c是多對多的關係。問題 是否設計第四張表專門存放a b c的關係,還是把關係維護在b表中?原則 首先在資料庫中不建議建立三維關係。其實就是說一張表 關係表 不要維繫三個模型的的關係 設計思路er圖...