您的位置:首页 > 编程语言 > Go语言

DjangoORM一对多&多对多操作

2016-04-23 09:21 656 查看
简要说明


通过操作对象的方式操作数据库



详细步骤

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: