zoukankan      html  css  js  c++  java
  • 数据库的简单多对多

    自己创建第三张表:

      class Book (models.Model):
             name== models.CharField(max_length=64)
      class Author (models.Model):
             name== models.CharField(max_length=64)
      class A_to_B(models.Model):
             bid = models.ForeignKey("Book", on_delete=models.CASCADE)
             aid = models.ForeignKey("Author", on_delete=models.CASCADE)
                 
                 联合为一
                 class Meta:
                      unique_together=(
                      ('bid','aid'),
                      
                      )

    数据库表:

     class Menus(models.Model):
                              dishes = models.CharField(max_length=64)
                              price = models.CharField(max_length=64)
                              def __str__(self):
                                  return self.dishes
    
    
     class guke(models.Model):
                               name = models.CharField(max_length=64)
                               menu = models.ManyToManyField("Menus")
                               def __str__(self):
                                   return self.name

    views.py

    def guke(request):
        
        # 正向查找
        # obj=models.guke.objects.get(id=1)
        # obj.menu.all()
        # print(obj)
        
        
        # 反向查找
        # obj=models.Menus.objects.get(id=24)
        通过菜名找到顾客的名字
        # a=obj.guke_set.all()
        # print(a,obj)
        
        
        
        # obj=models.guke.objects.all()
        # for o in obj:
        #  print(o.name,o.menu.all())

    通过“外键————”找到第三张表的数据

     # obj = models.guke.objects.values('id', 'name', 'menu', 'menu__dishes', 'menu__price')
        # for iten in obj:
        #     print(iten['id'], iten['name'], '菜名', iten['menu'], iten['menu__dishes'], iten['menu__price'])

    增加对应关系:

    # 基于guke表进行操作
    
    obj=models.guke.objects.get(id=1)
    # 在第三张表中增加对应关系
    obj.menu.add(2)
    obj.menu.add(*[28,29,30,31,32,33])
    # 删除对应关系
    obj.menu.remove(28,29,30)
    # 清除对应的关系
    obj.menu.clear()
    # 相当于update更新
    obj.menu.set([25,26])
    
    return HttpResponse("ok")
    
    # 基于Menus表进行操作
    
    obj=models.Menus.objects.get(id=25)
    obj.guke_set.add(*[2,1,3])
    obj.guke_set.remove(2)
    
    return HttpResponse("ok")
  • 相关阅读:
    java NIO的基本用法
    BufferedReader源码分析
    FileInputStream读中文乱码问题
    Java使用IO流对同一个文件进行读写操作
    php表格--大数据处理
    tp5--模型关联
    tp5 -- join注意事项
    表单外部提交
    网站防止sql注入
    微信网页授权报code been used, hints: [ req_id: XYv1Ha07042046 ]
  • 原文地址:https://www.cnblogs.com/ssxblog/p/10626805.html
Copyright © 2011-2022 走看看