关于django model relation set的设置问题


如下的Django模型

class Pub(Model):
    name = CharField(max_length=100)
class Book(Model):
    name = CharField(max_length=100)
    pub = ForeignKey(Pub)

有这样的数据

p1 = Pub(name='p1')
b1 = Book(pub=p1, name='b1')
b2 = Book(pub=p1, name='b2')
p1.save()
b1.save()
b2.save()

现在我要把p1的books_set全部清除,用一个新的book数组替换,这么做的话:

new_books = [Book(name='b3'), Book(name='b4')]
p1.book_set.set(new_books, bulk=False, clear=True)

原来的b1, b2还存在
得这么写:

p1.book_set.all().delete()
new_books = [Book(name='b3'), Book(name='b4')]
p1.book_set.set(new_books, bulk=False, clear=True)

有什么更好的写法吗?



相关阅读:
新闻类app,每次上拉和下拉刷新都有数据,逻辑是怎样的,如何防止重复?
ios系统cursor: pointer失效
谁能用通俗易懂的言语解释一下区块链中的节点和区块的意思啊
怎么取出排序后字典中的第一个键值对
position定位,设置top为百分数,如何计算?
python 中文写入文件后乱码
jquery实现鼠标滚动时元素消失,不滚动的时候元素回来?
vue2函数化组件的问题
Spring data elasticsearch注解@Filed和@ManytoMany同时使用,搜索结果取到属性为null
前端项目使用module.exports文件一定要Webpack编译吗?请问gulp可以编译这种文件吗
vuejs 如何在组件内调用腾讯地图的API
macbook用终端安装cocoapods时出问题 后来“gem”指令失效
js能监听伪元素的transitionend吗?
微信开发文档第三步:刷新access_token这个有什么用
表格填写数据,前后为什么会发生变化
请问在 uxcore 中如何设置数据为选中状态?
这段代码中的参数都是什么意思?我只是想有他们的https的形式而已。
如何构建一个高效的 golang web 开发环境,golang go run watch
lua 计算字符串长度为什么推荐用#而不推荐用string.len()
把一个浮点数的整数部分转成每三位加上一个逗号,我最后想用下函数调用函数本身的方法,但是出错了。



快速导航

Copyright © 2016 phpStudy |