Django的ORM支持通过基于过滤器的操作的.using()函数从特定数据库查询(当项目中定义了多个数据库时)。
e.g。 MyModel.objects.filter(name='Bob').using('my_non_default_database')
通过类MyModel()或快捷方式(如get_or_create())创建新记录时,如何进行等效操作?
答案 0 :(得分:10)
using
是MyModel.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')