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     创建一个对象并且添加关系
    
    
    
     
  • 相关阅读:
    23个精美的的国外网站设计作品推荐欣赏
    javascript / js数据类型,数据类型转换
    让人兴奋的视差滚动(Parallax Scrolling)效果网站分享
    手机网页应用的交互设计
    qq空间等闪动的文字怎么做?
    用CSS实现首字下沉效果,仿word的首字下沉
    35 套精美的 PSD 图标素材,网页素材下载
    使用纯CSS实现圆角边框并完美兼容
    推荐给 JavaScript 开发者十款超级有用的工具来提高客户体验
    40款非常漂亮的 HTML5 & CSS3 网站模板免费下载欣赏
  • 原文地址:https://www.cnblogs.com/NoteBook3013/p/10684853.html
Copyright © 2011-2022 走看看