如下的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)
有什么更好的写法吗?
通过赋值一个新的可迭代的对象,关联对象集可以被整体替换掉。