Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django ORM get_或_create处理多个数据库_Python_Django_Django Orm - Fatal编程技术网

Python 使用Django ORM get_或_create处理多个数据库

Python 使用Django ORM get_或_create处理多个数据库,python,django,django-orm,Python,Django,Django Orm,Django的ORM支持通过.using()函数从特定数据库(当项目中定义了多个数据库时)查询基于过滤器的操作 e、 g.MyModel.objects.filter(name='Bob')。使用('my\u non\u default\u database') 在创建新记录时,您将如何通过类MyModel()或快捷方式(如get_或_create())执行等效操作?使用是MyModel.objects管理器上的一种方法,因此您可以这样做 MyModel.objects.using('my_no

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

e、 g.
MyModel.objects.filter(name='Bob')。使用('my\u non\u default\u database')


在创建新记录时,您将如何通过类MyModel()或快捷方式(如get_或_create())执行等效操作?

使用
MyModel.objects
管理器上的一种方法,因此您可以这样做

MyModel.objects.using('my_non_default_database').get_or_create(name="Bob")
如果有MyModel实例,可以使用using关键字指定要保存到的数据库。作者指出了一些问题

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

使用
只是标准查询链的一部分。因此,在将查询发送到数据库之前,您可以在任何地方使用它<代码>获取或创建,不同于
过滤器
,它是原子的:当你调用它时,它会立即执行任务,所以你只需要在调用之前使用调用

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

如何处理常规模型创建?e、 g.MyModel(name='bob')保存时使用了一个关键字参数
。我已经更新了我的答案。