使用Django的`clear()`命令手动选择数据库

时间:2015-06-24 20:21:45

标签: django django-models

在我尝试从Django 1.2升级到1.6的某些代码中,“仪表板”和“模块”之间存在ManyToMany关系。我在视图中有一个部分在1.2中工作,但在1.6中没有用,我在删除“模块”,但首先尝试clear()它与“仪表板”的关系。

module = PortalAnalyticsTimeCountsModule.objects.using( DASHBOARD_DATABASE ).get( id = module_id )
module.dashboards.clear()
PortalAnalyticsTimeCountsModule.objects.using( DASHBOARD_DATABASE ).get( id = module_id ).delete( using = DASHBOARD_DATABASE )

其中DASHBOARD_DATABASE只是一个字符串,我在文件的开头设置为全局值,该行是这些行应该在这些行中使用的数据库的名称。请注意,DASHBOARD_DATABASE不是default文件中此django项目集的settings.py数据库,这就是我使用using手动设置数据库的原因。

在django 1.2中,这很好用。在django 1.6中,clear()命令给我一个错误,因为它使用default数据库而不是它应该使用的数据库。我找不到手动强制中间clear()行使用正确数据库的方法。

有人知道如何(没有引用ROUTERS的使用)?

1 个答案:

答案 0 :(得分:0)

嗯,显然解决方案就是删除

module.dashboards.clear()

完全。似乎没有必要删除连接。