xx = models.onetoonefield(to='表名',to_field='欄位名',on_delete=models.cascade)
#on_delete:刪除時的一些級聯效果,to_field可以不寫,預設是關聯到另一張表的主鍵,on_delete在1.x版本的django中不用寫,預設是級聯刪除的,2.x版本的django要寫.
方式1new_author_detail = models.authordetail.objects.create(
birthday='1979',
telephone='138',
addr='black'
)# 方式1
models.author.objects.create(
name='王濤',
age=18,
#直接將物件賦值屬性
authordetail=new_author_detail
)
方式2new_author_detail = models.authordetail.objects.create(
birthday='1979',
telephone='138',
addr='black'
)# 方式2
models.author.objects.create(
name='王濤',
age=18,
authordetail_id=new_author_detail.id
)
表一外來鍵關聯到表二,表一刪除,不影響表2,表2刪除會影響表1
models.authordetail.objects.get(id=2).delete()
models.author.objects.get(id=3).delete()
models.author.objects.filter(id=5).update(
name='崔老師',
age=16,
authordetail=models.authordetail.objects.get(id=5),
authordetail_id=4,
)
xx = models.foreignkey(to='表名',to_field='欄位名',on_delete=models.cascade)
方式1
外來鍵關聯的直接賦值為某個物件即可
obj = models.publish.objects.get(id=1)
models.book.objects.create(
title='李帥',
publishdate='2019-07-22',
price=3,
publishs=obj
)
方式2obj = models.publish.objects.get(id=1)
models.book.objects.create(
title='李帥test',
publishdate='2019-07-22',
price=3.5,
publishs_id=1 #可以是整型,也可以是物件的屬性(id)
#publishs_id=obj.id
)
models.publish.objects.get(id=1).delete()
models.book.objects.get(nid=1).delete()
models.book.objects.filter(pk=4).update(
title='b哥的往事2',
publishs=models.publish.objects.get(id=3),
publishs_id=3, #注意級聯關係 不能亂改
)
xx = models.manytomanyfield(to='另外乙個表名') #這是自動建立第三表
book_obj = models.book.objects.get(nid=1)
book_obj.authors.add(*[1,2])
book_obj = models.book.objects.get(nid=6)
book_obj.authors.remove(6)#將某個特定的物件從被關聯物件集合中去除。
book_obj.authors.remove(*[5,6])
book_obj.authors.clear() #情況與nid 6相關聯的所有
book_obj.authors.add(*[1,])#新增表記錄
book_obj.authors.set('1')#先清空然後在設定
book_obj.authors.set(['5','6']) #刪除然後更新
from django.db import models
# create your models here.
from django.db import models
# create your models here.
#作者表
class author(models.model): #比較常用的資訊放到這個表裡面
name=models.charfield( max_length=32)
age=models.integerfield()
# authordetail=models.onetoonefield(to="authordetail",to_field="nid",on_delete=models.cascade)
authordetail=models.onetoonefield(to='authordetail') #一對一到authordetail表 生成為表字段之後,會自動變為authordetail_id這樣有乙個名稱
# 外來鍵字段 -- 外來鍵欄位名_id
# foreign+unique
def __str__(self):
return self.name
#作者詳細資訊表
class authordetail(models.model):
birthday=models.datefield()
# telephone=models.bigintegerfield()
telephone=models.charfield(max_length=32)
addr=models.charfield( max_length=64)
def __str__(self):
return self.addr
#出版社表 和 書籍表 是 一對多的關係
class publish(models.model):
name=models.charfield( max_length=32)
city=models.charfield( max_length=32)
email=models.emailfield() #charfield -- asdfasdf
def __str__(self):
return self.name
#書籍表
class book(models.model):
nid = models.autofield(primary_key=true)
title = models.charfield( max_length=32)
publishdate=models.datefield()
price=models.decimalfield(max_digits=5,decimal_places=2) #decimal(16,2)
publishs=models.foreignkey(to="publish")
authors=models.manytomanyfield(to='author',)
def __str__(self):
return self.title
Django學習 21 表關係引數
一對多關係 foreignkey foreignobject foreignobject relatedfield to,要進行關聯的表名 to field none,要關聯的表中的欄位名稱 on delete none,當刪除關聯表中的資料時,當前表與其關聯的行的行為 models.cascade...
Django學習 介紹Django
django 乙個可以使web開發工作愉快並且高效的web框架。django提供了通過web開發模式的高度抽象,通過此次學習,明白兩個方面 第一,深度解釋django到底作了哪些工作以及如何用django構建web應用 第二,在適當地方討論更高階的概念,並解釋如何在自己的專案中高效使用這些工具。通過...
django 表關係之 多對多
比如一篇文章和標籤的關係。一篇文章可以有多個標籤,乙個標籤可以被多篇文章所引用。因此標籤和文章的關係就是典型的多對多的關係。下邊只是一篇文章對應多個標籤 乙個標籤對應多篇文章就不舉例了,自己腦補下!這樣我們會通過articles欄位來獲取某個標籤tags下邊的所有文章 articles models...