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:正向查询按字段,反向查询按表明小写