使用Django ORM get_or_create与多个数据库

时间:2011-11-02 16:19:50

标签: python django django-orm

Django的ORM支持通过基于过滤器的操作的.using()函数从特定数据库查询(当项目中定义了多个数据库时)。

e.g。 MyModel.objects.filter(name='Bob').using('my_non_default_database')

通过类MyModel()或快捷方式(如get_or_create())创建新记录时,如何进行等效操作?

2 个答案:

答案 0 :(得分:10)

usingMyModel.objects经理的一种方法,因此您可以

MyModel.objects.using('my_non_default_database').get_or_create(name="Bob")

如果您有MyModel实例,则可以使用using关键字指定要保存的数据库。 django docs指出了一些问题。

my_model = MyModel(name="Bob")
my_model.save(using='my_non_default_database')

答案 1 :(得分:4)

using只是标准查询链的一部分。因此,您可以在将查询发送到数据库之前的任何位置使用它。与get_or_create不同,filter是原子的:当你调用它时,它会立即执行它,所以你只需要在此之前调用using

MyModel.objects.using('my_non_default_database').get_or_create(name='Bob')
相关问题