码迷,mamicode.com
首页 > 其他好文 > 详细

Django----ORM 基本操作的补偿

时间:2018-06-07 20:10:16      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:-o   port   clear   delete   cas   基本   自动   result   col   


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.save()
# 查
# 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 基本操作的补偿

标签:-o   port   clear   delete   cas   基本   自动   result   col   

原文地址:https://www.cnblogs.com/lhqlhq/p/9152501.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!