Это плохая идея изменить назначение app_label на существующих моделях Django? - PullRequest
1 голос
/ 25 февраля 2010

У меня есть головокружительная идея сгруппировать модели из разных существующих приложений в одно большое новое блестящее приложение. Это не очень важная причина, по которой мне нужно это делать, но было бы неплохо объединить весь код в одном подкаталоге, и это улучшило бы сайт, чтобы сгруппировать все модели вместе в admin_index под одним заголовком модуля.

Моей первой мыслью было жестко закодировать существующие имена таблиц в настройку db_table в Meta на всех моделях, а затем присвоить каждой идентичный параметр app_label.

Но меня беспокоит то, что это может испортить параметры ContentType и auth Permission для всего. Кто-нибудь пробовал это раньше? Я немного погуглил и не видел ничего такого, что напрямую отвечало бы на этот вопрос, хотя кажется, что несколько человек придумали хитроумные способы перераспределения admin_index с некоторыми пользовательскими настройками конфигурации.

1 Ответ

0 голосов
/ 26 февраля 2010

Вы правы, что перемещение моделей сделало бы существующие записи ContentType бесполезными. Не зная специфики вашего проекта, трудно сказать, что может быть «хорошей идеей». Вы можете просто попробовать разветвлять свой код, вносить изменения и обновлять таблицы типов контента и разрешений для отражения. В качестве альтернативы вы могли бы использовать Юг для написания миграции данных, хотя было бы сложно найти баланс, чтобы заставить его работать в зависимости от того, когда миграция создается или выполняется, когда вы перемещаете модели. Вы также можете проверить естественные ключи, если сможете запустить транк: http://docs.djangoproject.com/en/dev/topics/serialization/#natural-keys. Это может привести к более простому пути экспорта ваших данных в осветительные приборы более общим образом, чтобы после внесения изменений вы были возможность загружать их без особых затруднений.

Если вы планируете некоторое время использовать Django и / или работать над большими проектами, вы захотите начать развивать навыки, чтобы справляться с этими изменениями. Эволюция кода и рефакторинг - это факты жизни. Изучение ловушек, связанных с внесением этих изменений в случайной обстановке, поможет вам в будущем лучше решать проблемы, возникающие в настройках команды и в крупных проектах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...