Django ORM 基本操作的補償

2022-09-11 22:33:25 字數 3332 閱讀 1560

from django.db import models

# create your models here.

class classes(models.model):

'''班級表

'''titile = models.charfield(max_length=32)

m = models.manytomanyfield("teacher")

class teacher(models.model):

'''老師表

'''name = models.charfield(max_length=32)

# 單錶的增刪改查

# 增# teacher.objects.create(name="root")

# obj=teacher(name="root")

# obj.s**e()

# 查# teacher.objects.all()

# teacher.objects.filter(id=1)

# teacher.objects.filter(id=1,name="root")

# teacher.objects.filter(id__gt=1)

# result=teacher.objects.filter(id__gt=1).first()

## 刪

# teacher.objects.filter(id=1).delete()

## 改

# teacher.objects.all().update(name="alex")

# teacher.objects.filter(id=1).update(name="alex")

# class c2t(models.model):

# '''

# 班級和老師之間的關係表

# '''

# cid = models.foreignkey(classes)

# tid = models.foreignkey(teacher)

#####################################多對多

'''班級:

id titile

1 1班

2 2班

3 3班

老師:id name

1 alex

2 dou

3 chou

4 lv

增加obj1 = classes.objects.filter(id=1).first()

obj1.m.add(2) # 2就是老師id

obj1.m.add([4,5]) # 4,5就是老師id

obj2 = classes.objects.filter(id=2).first()

obj2.m.add(2) # 2就是老師id

obj2.m.add([4,5]) # 3,5就是老師id

刪除obj1.m.remove([4,5]) #刪除 4,5老師

清空obj2.m.clear() #刪除 將班級id=2的老師全部刪除

重置obj2.m.set([2,3,4]) #將班級id=2的老師設定為id=[2,3,4]

把2班的所有老師列絕出來

obj3 = class.objects.filter(id=2).first() #得到2班

obj3.id

obj3.titile

ret = obj3.m.all() #ret是乙個列表,[老師2(id,name),老師3(id,name),老師4(id,name)]

老師班級關係表

id 班級id 老師id

1 1 2

4 2 2

5 2 3

6 2 4

'''class student(models.model):

'''學生表

'''username = models.charfield(max_length=32)

age = models.integerfield()

gender = models.booleanfield()

cs = models.foreignkey(classes,on_delete=models.cascade,)

'''id username age gender cs_id

增加student.objects.create(username="aa",age=12,gender="男",cs_id=1)

student.objects.create(username="aa",age=12,gender="男",cs_id=classes.objects.filter(id=1).first)

檢視ret = student.objects.filter(id=1)

for item in ret:

print(item.id)

print(item.username)

print(item.age)

print(item.gender)

print(item.cs_id)

print(item.cs.id)

print(item.cs.name)

刪除student.objects.filter(id=1).delete()

student.objects.filter(cs_id=1).delete()

cid = input("請輸入班級id")

student.objects.filter(cs_id=cid).delete()

cname=input("請輸入班級名稱")

student.objects.filter(cs__name=cname).delete() //寫filter條件的時候,用__來跨表

修改student.objects.filter(cs_id=1).update()

'''

1 類代表資料的表

2 類的物件代指資料庫中標的一行記錄

3 fk欄位代指關聯中的一行資料(類的物件)

a,正向查用fk欄位

b,反向查,用小寫的  類名_set.filter()   。預設是小寫的類名_set.   在外鍵裡加上related_name="sss"後,反向查就可以直接用sss來代替 小寫的類名_set

4 m2m 字元會自動生成第三張那個表,以來關聯表對第三張表簡介操作

Django ORM基礎操作

jquery dom d1 自動翻譯 document.getelementbyid d1 databases import pymysql 告訴django用pymysql來代替預設的mysqldb pymysql.install as mysqldb mysqldb不支援中py3 class 類...

Django orm的正向反向操作

通過values 和values list來操作的 class utype models.model title models.charfield max length 32 ucap models.foreignkey ubumen class uinfo models.model name mo...

Django orm操作的基礎認識

在使用django 框架開發web應用的過程中,不可避免的會涉及到資料的管理操作,如增刪改查,使用的資料庫管理軟體有mysql.oracle,microsoft sql server等.編寫sql語句的時候,直接編寫原生sql語句會存在幾個方面的問題,嚴重的影響了開發效率,1.sql語句執行效率低,...