• day103-django-ORM操作-多对多-自动生成的关联表


    1.models.py
    
    from django.db import models
    
    #自动生成的关联表的优点是要写的代码比较少,缺点是关联表只能有三列,适用于简单的情况,
    #而自定义的关联表可以写很多列,适用于复杂的情况。
    class Teachers(models.Model):
        name = models.CharField(max_length=32)
        #m是连接Classes的通道,在数据库自动创建表app01_teachers_m,
        #字段名是id、teachers_id、classes_id
        m = models.ManyToManyField('Classes')
    
    class Classes(models.Model):
        title = models.CharField(max_length=32)
    2. views.py
    
    from django.shortcuts import render,HttpResponse
    from app01 import models
    
    def test(request):
        # models.Teachers.objects.create(name='小明')
        # models.Teachers.objects.create(name='小红')
        # models.Teachers.objects.create(name='小方')
        #
        # models.Classes.objects.create(title='全栈1期')
        # models.Classes.objects.create(title='全栈2期')
        # models.Classes.objects.create(title='全栈3期')
        # models.Classes.objects.create(title='全栈4期')
    
        row = models.Teachers.objects.filter(name='小明').first()
    
        #
        # app01_teachers_m表的classes_id增加1,2,3,4
        row.m.add(1,2)
        row.m.add(*[3,4])
    
        #
        # app01_teachers_m表的classes_id删除3,4
        row.m.remove(3,4)
        # row.m.remove(*[3,4])
        #删除全部
        row.m.clear()
    
        #
        #app01_teachers_m表的classes_id重设为2,3
        row.m.set([2,3])
    
        #
        #找到Classes表中小明老师任教的所有班级
        classes_list = row.m.all()
        for row in classes_list:
            print(row.title)
        # 找到Classes表中小明老师任教的全栈2期的行
        # row = row.m.filter(title='全栈2期')
    
        #反向操作
        #找到任教全栈2期的老师都有谁
        row = models.Classes.objects.filter(title='全栈2期').first()
        teachers_list = row.teachers_set.all()
        for row in teachers_list:
            print(row.name)
    
        return HttpResponse('...')
  • 相关阅读:
    两个数据库比较 对比视图存储过程及表结构差异
    导入/导出Excel
    比较两个数据库的表结构差异
    根据当月数据库自动生成下个月数据库--3
    根据当月数据库自动生成下个月数据库--2
    根据当月数据库自动生成下个月数据库--1
    ubuntu 分屏工具
    ubuntu 分屏工具
    中英文对照 —— 色彩的描述
    中英文对照 —— 色彩的描述
  • 原文地址:https://www.cnblogs.com/python-daxiong/p/12792212.html
Copyright © 2020-2023  润新知