在我的django应用程序中,我有一个使用这种方法的模型:
def deleteItem(self, item, pt):
if pt == 'product':
i = self.vcartitem_set.filter(product__id=item)
elif pt == 'brand':
i = self.vcartbrand_set.filter(brand__id=item)
else:
return u'Wrong product type'
i.delete()
return 'OK'
我有2个数据库,'默认'和'奴隶'。 Slave是只读的,所以当使用'slave'数据库执行 self.vcartitem_set.filter(product__id = item)时,我在 i.delete()上有错误。我可以通过写 i.delete(使用='默认')来绕过这个,但是我必须为每个模型编写它。有没有办法告诉django使用'default'DB执行所有写操作,即使先前使用'slave'DB检索了对象?
答案 0 :(得分:0)
您可以使用数据库路由器执行此操作:
https://docs.djangoproject.com/en/dev/topics/db/multi-db/#automatic-database-routing
您只需要创建一个路由器模型并定义db_for_read和db_for_write函数,将DATABASE_ROUTERS添加到您的settings.py中它就可以了。