28. Многотабличный запрос — многотабличный запрос по ассоциациям

задняя часть

Многотабличный запрос --- запрос через ассоциации

Django предоставляет мощный и интуитивно понятный способ «управлять» отношениями в запросах, а также автоматически обрабатывает JOIN в фоновом режиме. Чтобы создать ассоциацию, просто используйте имя связанного поля модели, разделенное двойным подчеркиванием, до нужного поля:

Практическое обучение - более интуитивное понимание:

(Все, что вы получаете, это данные типа QuerySet!)

from django.http import HttpResponse

from .models import Department, Student, Course, Stu_detail


def add_user(request):
    # 1.查询学院名为‘北大’的学生的信息        (注意是两个下划线,可以获取到其对应的属性)
    s_all = Student.objects.filter(department__d_name='北大')
    print(s_all)

    # 它还可以反向工作。若要引用一个“反向”的关系,只需要使用该模型的小写的名称!!!

    # 2.查询学生名字中包含'小'的学生的学院信息
    d_all = Department.objects.filter(student__s_name__contains='小')
    print(d_all)

    # 3.查询学号为1的学生的所有的课程
    c_all = Course.objects.filter(student__s_id=1)
    print(c_all)

    # 4.查询报了课程3的所有学生
    stu_all = Student.objects.filter(course__c_id=3)
    print(stu_all)

    # 5.查询报了'python'课程的学生的所属学院的信息
    cou_all = Department.objects.filter(student__course__c_name='python')
    print(cou_all)

    return HttpResponse("插入数据成功!")