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")
  • 相关阅读:
    Linux基础之什么是Linux
    JavaWeb之AJAX
    JavaWeb之XML
    JavaWeb之Servlet组件
    JavaWeb之JSP
    JavaWeb之HTTP概述
    JavaWeb之开发环境搭建
    JavaWeb之JQuery
    JavaWeb之javaScript
    ddd领域驱动
  • 原文地址:https://www.cnblogs.com/ssxblog/p/10626805.html
Copyright © 2011-2022 走看看