【发布时间】:2020-12-15 16:38:22
【问题描述】:
我正在创建一个从 Oracle SQL 数据库读取的 Django 模型。从模型读取的表中,一些列混合了大小写和空格,即“Region”和“Foo Bar”。所以
SELECT "Region", "Foo Bar" FROM some_table
在数据库方面完全有效。 Django 模型使用db_column 字段显式读取这些列,
class SomeModel(models.Model):
region = models.CharField(max_length=100, db_column="Region")
foo_bar = models.CharField(max_length=100, db_column="Foo Bar")
然而,当 Django 访问数据库时,我得到了错误
ORA-00904: invalid identifier: "some_table"."FOO BAR"
从列名在过程中的某处大写。有什么方法可以强制 Django 从 Django 的角度保留混合大小写,而无需修改 db 端的列名?
我尝试过:db_column="'Foo Bar'"、'"Foo Bar"'、"\"Foo Bar\"",这些似乎都没有使字符串按字面意思和大写字母解释。
谢谢!欢迎使用 Hacky 变通方法。
【问题讨论】:
-
这闻起来像一个错误,特别是如果您查看 this test。你用的是什么版本?也许这在以后的版本中得到了修复。
-
这似乎是 Oracle 的设计:see the code that does it