为所有表名加前缀Django 1.11

为所有表名加前缀Django 1.11,django,oracle,django-1.11,Django,Oracle,Django 1.11,我有一个数据库不能使用多个模式,因为它有一些遗留软件,它需要与一个新的Django应用程序共享空间。Django的内置表名与一些现有表名冲突,因此我想为所有表名添加前缀 我发现了各种各样的stackoverflow帖子,比如,他们提到了一些插件,比如和,但所有这些都是很古老的插件,在Django 1.8和更高版本中都不起作用(我运行的是1.11) Django 1.11有什么解决方案吗?我到处都找过了,但是现有的插件不起作用,提交给Django本身的每个特性请求都已作为wontfix关闭。我试着

我有一个数据库不能使用多个模式,因为它有一些遗留软件,它需要与一个新的Django应用程序共享空间。Django的内置表名与一些现有表名冲突,因此我想为所有表名添加前缀

我发现了各种各样的stackoverflow帖子,比如,他们提到了一些插件,比如和,但所有这些都是很古老的插件,在Django 1.8和更高版本中都不起作用(我运行的是1.11)

Django 1.11有什么解决方案吗?我到处都找过了,但是现有的插件不起作用,提交给Django本身的每个特性请求都已作为wontfix关闭。我试着把插件升级到1.11版本,但是它们实在是太离谱了

具体来说,我想为所有表添加前缀,而不仅仅是我特定项目中的表,包括Django的内置表。例如,我希望“DJANGO_AUTH”变成“PREFIX_DJANGO_AUTH”


如果有关系,数据库是Oracle。

您应该能够使用模型中的元类选择所需的表名


否则,默认设置是将app_名称与类名合并以创建tablename

虽然ans来得这么晚,但我终于得到了ans:

  • 安装应用程序

    pip install django-db-prefix
    
  • 将应用程序包括在Settings.py中

    INSTALLED_APPS = ['django_db_prefix',]
    
    DB_PREFIX = "foo_"
    
  • 在Settings.py中添加前缀

    INSTALLED_APPS = ['django_db_prefix',]
    
    DB_PREFIX = "foo_"
    

  • 我认为可以指定Django表的名称:真奇怪,Oracle数据库中不能有另一个模式,是吗?遗留代码非常旧,无法处理多个模式。这可能不是不可能的,但是如果我可以避免的话,会容易100倍。在这里发布了一个解决更改多个名称的答案:。但这不会修复您无法控制的应用程序中的表。我应该澄清一下-我想重命名所有表,包括内置的表,例如django.contrib.auth表。我添加了一个注释以澄清-您的解决方案似乎只适用于我创建的模型,而不适用于内置的django应用程序以及插件。好的,但我不确定如何做到这一点。听起来不太好。