DjangoORM一对多&多对多操作
2016-04-23 09:21
656 查看
简要说明
通过操作对象的方式操作数据库
详细步骤
models.py的结构是:
如果models.py中外键定义没有写 related_name=’student_teacher’, 可以直接用
============================================================================================
from myblog.models import Student,Teacher
def student_list(request):
数据库一对多的操作:
查找:
方法一:
通过Student表来查:
查找Student表中,teacher_id为1的老师名称
模板中使用:
方法二:
通过Teacher表来查:
新增
方法一:
方法二:
修改
只删除student
[/code]
删除和该teacher相关的所有student
[/code]
数据库多对多操作:
[/code]
来自为知笔记(Wiz)
通过操作对象的方式操作数据库
详细步骤
models.py的结构是:
如果models.py中外键定义没有写 related_name=’student_teacher’, 可以直接用
studentList = teacher.student_teacher.all() 可以改写成: teacher = Teacher.objects.get(id = 1) studentList = teacher.student_set.all()
============================================================================================
from myblog.models import Student,Teacher
def student_list(request):
t = loader.get_template("student_list.html") #studentList = Student.objects.all() teacher = Teacher.objects.get(id = 1) studentList = teacher.student_teacher.all() c = Context({"studentList":studentList}) return HttpResponse(t.render(c))
数据库一对多的操作:
查找:
方法一:
通过Student表来查:
查找Student表中,teacher_id为1的老师名称
studentList = Student.objects.all()
模板中使用:
student.teacher.name来获取外键的name属性值
方法二:
通过Teacher表来查:
teacher = Teacher.objects.get(id = 1) #先查到id 为1 的teacher studentList = teacher.student_teacher.all() #通过外键查到studentlist
新增
方法一:
通过teacher得到student_set来创建 teacher.student_set.create(name = "tom",...)
方法二:
创造一个student对象,添加到teacher的student_set属性中 student = Student(name = "tom",....) teacher.student_set.add(student)
修改
只删除student
teacher = Teacher.objects.get(id = 1)
student = teacher.student_set.get(id = 1)
student.delete()
[/code]
删除和该teacher相关的所有student
teacher = Teacher.objects.get(id = 1)
student = teacher.student_set.get(id = 1)
student.teacher.delete()
[/code]
数据库多对多操作:
group = Group.objects.get(id = 1)
studentList = group.members.all()
groupList = student.group_set.all()
MemberShip(group = newGroup, student=newStudent).save()
[/code]
来自为知笔记(Wiz)
相关文章推荐
- mongo
- django 的ORM
- UVALive 4617 Simple Polygon(顺/逆时针输出所有点/极角排序)
- django model
- go channel缓冲区的大小
- EM算法(Expectation Maximization Algorithm )
- google chrome 官方下载安装的方法和离线包官方下载
- 生成学习算法(Generative Learning Algorithms)
- Google开源word2vec,文本相似度计算工具
- Django 的 ORM
- 【Leetcode】:144. Binary Tree Preorder Traversal 问题 in Go语言
- AV.Music.Morpher.Gold.v5.0.38.WinAll.Cracked-CRD\
- DJANGO里让用户自助修改邮箱地址
- 自定义Django Command命令
- DJANGO里让用户自助修改密码
- Django ORM
- 忘记Django登陆账号和密码的处理方法
- golang交叉编译
- 听说,你想让自己的Go程序运行的更快?
- Mongo相关