关于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)

有什么更好的写法吗?

阅读 2.7k
1 个回答
新手上路,请多包涵

通过赋值一个新的可迭代的对象,关联对象集可以被整体替换掉。

new_list = [obj1, obj2, obj3]
e.related_set = new_list
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题