1 操作记录 一对多: 方式1: publish_obj=Publish.objects.get(nid=1) book_obj=Book.objects.create(title="金瓶眉",publishDate="2012-12-12",price=100,publish=publish_obj) 方式2: book_obj=Book.objects.create(title="金瓶眉",publishDate="2012-12-12",price=100,publish_id=1) book_obj.publish : 与这本书籍关联出版社对象 多对多记录操作: 核心:先第三张关系表添加记录 app01_book_author id book_id author_id 1 1 1 2 1 2 3 2 2 author id name 1 alex 2 egon book_obj.authors.add(1,2) book_obj.authors.remove(1) book_obj.authors.clear() book_obj.authors.set(3) book_obj.authors.all() # 查询与这本书关联的所有queryset的集合 2 基于对象的跨表查询(基于子查询) 正向查询 一对多: 正向查询按字段:book.publish Book----------------------------------------->Publish <--------------------------------------- 反向查询表名小写_set.all():pub_obj.book_set.all() 多对多: 正向查询按字段 book.authors.all() Book -------------------------------------->Author <-------------------------------------- 反向查询按表名小写_set.all(): alex.book_set.all() 一对一: 正常查询安字段:alex.ad Author -----------------------------------------> AuthorDetail <------------------------------------------ 反向查询按表名小写 ad.author 总结:正向查询按字段,反向查询 得到一个对象,按表名小写 可能得到多个对象,按表名小写_set().all() 基于双下划线的跨表查询(基于join实现的) KEY:正向查询按字段,反向查询按表明小写