2016-06-21 2 views
0

Недавно я начал работу над долговременным веб-сайтом Django с поддержкой MySQL. Код в основном чистый и хорошо написанный, за исключением одного патча в базе данных, который, кажется, был поспешно применен.Псевдоним в Django ORM

В частности, одна из моделей была названа tbl_Badge_data. В соответствии с соглашениями об именах, применяемыми к остальной части веб-сайта, эту модель следует называть Badge.

К сожалению, на неправильное имя слишком много построено, и невозможно изменить существующие сценарии (к ним относятся Django-запросы, а также SQL-запросы). Замена всех экземпляров неправильного имени невозможна, так как не весь код принадлежит нам; есть другие пользователи, полагающиеся на эти данные.

Есть ли способ для псевдонима Badge до tbl_Badge_data, так что вся будущая разработка использует правильное имя? Если да, как это повлияет на имя базовой таблицы? Если нет, то каков наилучший способ справиться с чем-то подобным, не внося при этом хита производительности (например, «прокси-таблица» или «прокси-модель», которая представляет собой карту «один к одному»)? Как вы можете себе представить, моя команда не хочет вкладывать время в этот не-вопрос (и, вероятно, оправданно), хочу, чтобы я проигнорировал это.

+1

Почему бы не просто добавить '' Badge = tbl_Badge_data'' к вашим models.py (сразу после того, как вы определили класс '' tbl_Badge_data''), а затем выполните '' from foo.models import Badge'' всякий раз, когда вы хотите использовать его? – Serafeim

ответ

2

Прокси-модель не индивидуальная карта; он не имеет представления в базе данных и делает именно то, что вы хотите.

Еще проще, но это просто определение псевдонима в ваших моделях; после определения tbl_Badge_data, вы можете просто сделать:

Badge = tbl_Badge_data 

и импортировать Badge везде, где вам это нужно.

+0

Не понимал, что все так просто. Благодаря @DanielRoseman – Jedi