一对多添加记录:
publish=models.Publish.objects.create(name='北京出版社',addr='北京',phone='0536-12345678',email='邮箱地址')
# 新增西游记图书
book=models.Book.objects.create(name='红楼梦',price='23.45',publish=publish)# publish=对象
# book=models.Book.objects.create(name='西游记',price='23.55',publish_id=1)# publish_id=数字
# 新增西游记
book=models.Book.objects.create(name='西游记',price='23.55',publish_id=publish.id)# publish_id=数字
# 总结:
1 email可以不传email,本质就是varchar(admin中会判断)
2 新增图书:
-publish=publish
-publish_id=publish.id
3 写在表模型中的publish字段,到数据库中会变成publish_id(ForeignKey)
4 查到book对象以后
-book.publish 对象
-book.publish_id id号,数字
多对多添加记录,修改,删除:
1 自动创建的表,表模型就拿不到,book.authors代指表模型
# 多对多,作者和书
# 给西游记这本书新增两个作者lqz和egon
# 去到西游记这本书
# book=models.Book.objects.get(name='西游记')
# 代指中间表book.authors
# lqz=models.Author.objects.get(id=2)
# egon=models.Author.objects.get(id=3)
# book.authors.add(2,3) # 新增作者,通过id新增
# # book.authors.add(lqz,egon) # 新增作者,通过对象新增
# book.authors.add(2,egon) # 新增作者,通过对象新增
# 西游记删除一个作者
# book = models.Book.objects.get(name='西游记')
# book.authors.remove(2)
# egon = models.Author.objects.get(id=3)
# book.authors.remove(egon)
# clear 清空所有作者
book = models.Book.objects.get(name='西游记')
# book.authors.add(2, 3)
# book.authors.clear()
# set 先清空,再add,前提是不存在的作者
book.authors.set([4, ])
# add 增加,remove删除,set clear