zoukankan      html  css  js  c++  java
  • django一对多,多对多操作

    先在models中创建表,以及建立各表之间的关系:
    class Publisher(models.Model):
        name = models.CharField(max_length=32)
    
    class Book(models.Model):
        title = models.CharField(max_length=32)
        price = models.DecimalField(max_digits=5,decimal_places=2)    # 999.99
        publisher = models.ForeignKey('Publisher',null=True ,related_name='books', related_query_name='book',on_delete=models.CASCADE)
    
    class Author(models.Model):
        name = models.CharField(max_length=32)
        books = models.ManyToManyField('Book',related_name='authors')
    表示一对多的关系:
    # 基于对象
    # 
    # 正向查询     book ——》  publisher
    # 
    # book_obj.publisher     ——》    所关联的出版社对象
    # book_obj.publisher.name     ——》    所关联的出版社对象名称
    # book_obj.publisher.pk    ——》    所关联的出版社对象主键
    # book_obj.publisher_id     ——》    从book中直接拿到所关联对象的id
    #
    # 反向查询    publisher ——》 book
    # 
    # 不指定related_name
    # pub_obj.book_set      ——》   关系管理对象
    # pub_obj.book_set.all()      ——》 出版社出版所有的书籍对象
    
    # 指定related_name='books'
    # pub_obj.books      ——》   关系管理对象
    # pub_obj.books.all()      ——》 出版社出版所有的书籍对象
    # 
    # 基于字段查询
    # 
    # models.Book.objects.filter(publisher__name='人民出版社')
    # 
    # 不指定related_name
    # models.Publisher.objects.filter(book__name='跟金老板学开车')
    
    # 指定related_name =’books‘
    # models.Publisher.objects.filter(books__name='跟金老板学开车')
    # 指定related_query_name =’book‘
    # models.Publisher.objects.filter(book__name='跟金老板学开车')
    
    
    表示多对多的关系:
    
    
    # 基于对象的查询
    # author_obj.books      ——》   关系管理对象
    # author_obj.books.all()      ——》   关系管理对象
    # 
    # 不指定related_name 
    # book_obj.author_set      ——》   关系管理对象
    # book_obj.author_set.all()      ——》 作者写过所有的书籍对象 
    # 
    # 指定related_name='authors' 
    # book_obj.authors——》   关系管理对象
    # book_obj.authors.all()      ——》 作者写过所有的书籍对象 
    # 
    # 管理对象的方法
    #
    # all       获取所有的对象
    # set     设置关系      多对多 [ id,id  ]   [对象,对象]      一对多     [对象] 
    # add     添加关系     多对多 id,id     对象,对象     一对多     对象 
    # remove   删除关系        一对多:必须设置外键可为空,才有remove  clear方法
    # clear       清空所有的关系
    # create     创建一个对象并且添加关系
    
    
    
     
  • 相关阅读:
    android 项目学习随笔十五(ShareSDK开放平台)
    android 项目学习随笔十四(WebView)
    android 项目学习随笔十三(ListView实现ITEM点击事件,将已读状态持久化到本地)
    android 项目学习随笔十二(ListView加脚布局)
    android 项目学习随笔十一(ListView下拉刷新提示)
    android 项目学习随笔十(自定义ProgressBar)
    android 项目学习随笔九(ListView加头布局)
    android 项目学习随笔八(xUtils的BitmapUtils模块)
    android 项目学习随笔七(ViewPagerIndicator与ViewPager)
    android 项目学习随笔六(网络缓存)
  • 原文地址:https://www.cnblogs.com/NoteBook3013/p/10684853.html
Copyright © 2011-2022 走看看