1、第一種django orm在建立表的時候自動幫我們建立表關係
from django.db import models表book_authors就是系統自動建立出來的用來關聯author和book表# 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)
2、第二種純手動建立關係表(第三張表)
from django.db import models手動建立關係表的好處是可以在關係表中建立自定義字段;缺點就是不能使用orm# 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)
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前後端資料傳輸編碼格式contenttype# 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)
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圖...