在Django ORM中使用get_or_create与多个数据库
Django的ORM(对象关系映射)支持从特定的数据库中查询数据(当你的项目中定义了多个数据库时),可以通过 .using() 函数来进行基于过滤的操作。
比如,你可以这样写:MyModel.objects.filter(name='Bob').using('my_non_default_database')
那么,当你想要创建新记录时,使用 MyModel() 类或者像 get_or_create() 这样的快捷方式,应该怎么做呢?
2 个回答
4
using
只是标准查询链的一部分。所以,你可以在发送查询到数据库之前的任何地方使用它。get_or_create
和 filter
不一样,它是原子的:当你调用它的时候,它会立即执行,所以你只需要在那之前调用 using
。
MyModel.objects.using('my_non_default_database').get_or_create(name='Bob')
10
using
是一个在 MyModel.objects
管理器上的方法,所以你可以这样做:
MyModel.objects.using('my_non_default_database').get_or_create(name="Bob")
如果你有一个 MyModel 的实例,你可以使用 using 这个关键词来指定要保存到哪个数据库。django 文档 提到了一些需要注意的地方。
my_model = MyModel(name="Bob")
my_model.save(using='my_non_default_database')