【发布时间】:2013-12-12 12:35:32
【问题描述】:
我有一个对象的导入,我想检查数据库是否已经在之前导入过,如果有,我会更新它,如果没有,我会创建一个新的。但是最好的方法是什么。
现在我有这个:
old_books = Book.objects.filter(foreign_source="import")
for book in new_books:
try:
old_book = old_books.get(id=book.id):
#update book
except:
#create book
但这会为 new_books 中的每本书创建一个数据库调用。所以我正在寻找一种方法,它只会对数据库进行一次调用,然后从该查询集中获取对象。
Ps:不要寻找 get_or_create 之类的东西,因为更新和创建函数比这更复杂:)
--- 编辑---
我想我的解释不够好,因为答案并不能反映问题所在。所以为了更清楚(我希望):
我想根据该对象的 id 从查询集中挑选出一个对象。我想要完整的对象,所以我可以更新它并使用它更改的值保存它。所以假设我有一个包含 3 个对象 A 和 B 和 C 的查询集。然后我想要一种方法来询问查询集是否有对象 B 以及是否有然后获取它,而无需额外的数据库调用。
【问题讨论】:
标签: django