Я использую Django с существующей базой данных Oracle (то есть, в которой таблицы НЕ были созданы Django). Поэтому в моих моделях мне приходится указывать имя таблицы, указав значение для db_table в классе Meta. Я сталкиваюсь с проблемами, потому что таблицы, к которым я хочу получить доступ, принадлежат другому пользователю, для которого у меня есть учетные данные. Я уполномочен просматривать таблицы (без проблем в SQL Developer).
Когда имя таблицы Oracle в противном случае будет превышать 30 байтов, Django отсекает последние четыре байта имени и заменяет их повторяемым 4-байтовым хешем остальной части имени таблицы. Это все хорошо и хорошо для столов, которые Django делает сам. Обычно это также не было бы проблемой для доступа к таблицам в существующих БД (как в моем случае), поскольку сама Oracle ограничивала бы имена 30 байтами.
Проблема в том, что у Django нет отдельного средства, позволяющего заметить, что таблица принадлежит другому пользователю. Поэтому я использую обходной путь с синтаксисом точек (просто устанавливая db_table как, например, «USERNAME.MY_29_BYTE_TABLE_NAMEXXXXXXXX»), но так как это приводит к тому, что общее имя таблицы превышает 30 байтов, Django выполняет свой способ усечения пытается запросить имя таблицы, которая не существует.
Есть ли способ предотвратить такое поведение или другой способ указать пользователя отдельно от имени таблицы?