django專案models.py建表
from django.db import models
class myclass(models.model):
cname = models.charfield(max_length=12)
class student(models.model):
sname = models.charfield(max_length=12)
myclass=models.foreignkey(to='myclass')
def __str__(self):
return self.sname
class theacher(models.model):
tname = models.charfield(max_length=12)
myclass = models.manytomanyfield(to='myclass')
def __str__(self):
return self.tname
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("django_settings_module", "day66.settings")
import django
django.setup()
#、查詢id=1的班級的所有的學生
#方法1.1、先獲取id=1的班級物件反向查詢學生物件
# print(myclass.objects.get(id=1).student_set.all())
# 方法1.2、根據queryset物件反向查詢
# print(myclass.objects.filter(id=1).values('student__sname'))
#方法2、學生物件正向查詢班級id=1的學生
# print(student.objects.filter(myclass__id=1))
#、查詢id=2的班級的所有老師
#反向查詢基於queryset和物件查詢
# print(myclass.objects.filter(id=2).values('theacher__tname'))
# print(myclass.objects.get(id=2).theacher_set.all())
# #正向查詢
# print(theacher.objects.filter(myclass__id=2))
#給id=2的班級新增乙個id=6的學生,如果學生原本有班級則改成現在班級(學生只能對應乙個班級)
# print(myclass.objects.get(id=2).student_set.add(student.objects.get(id=6)))
#把所有學生劃到1班去
# print(myclass.objects.get(id=1).student_set.set(student.objects.all()))
#給id=2的老師新增乙個班級
# theacher.objects.get(id=2).myclass.add(*[2,3])
#把id=2的老師關聯的1班清空解除關聯關係
# theacher.objects.get(id=2).myclass.remove(1)
# 把id=2的老師關聯的班清空解除關聯關係
# theacher.objects.get(id=2).myclass.clear()
#id = 2的老師現在開設一新班級:php
# theacher.objects.get(id=2).myclass.create(cname='php')
#類似方法2先建立課程然後繫結關係
# myclass.objects.create(cname='go')
# theacher.objects.get(id=2).myclass.add(6)
#給id=2的班級新增乙個id=3的老師
# myclass.objects.get(id=2).theacher_set.add(3)
#myclass.objects.get(id=2).theacher_set.add(theacher.objects.get(id=3))
#多對多情況add可以直接寫id或者物件,一對多的一的那方新增時只能寫物件
總結:給一對多新增物件是時,呼叫者時是一時add只能新增物件,是多的一方是物件和id都可以 odoo的多對多,一對多欄位新增資料
many2many 0,0,根據values裡面的資訊新建乙個記錄。1,id,更新id id的記錄 寫入values裡面的資料 2,id 刪除id id的資料 呼叫unlink方法,刪除資料以及整個主從資料鏈結關係 3,id 切斷主從資料的鏈結關係但是不刪除這個資料 4,id 為id id的資料新增...
Django ORM 一對多 和 多對多
在 models.py 上定義 class province models.model name models.charfield max length 32 def str self return self.name class city models.model name models.char...
django 一對多,多對多查詢
假設有表的關係如下 1 class classes models.model 2 name models.charfield max length 32 3 institute models.charfield max length 32 4 headteacher models.foreignke...