Это в основном потому, что Django использует последнюю часть как свойство "app_label" в некоторых местах.
Например, someModel._meta.app_label
может использоваться в сценарии с несколькими базами данных, чтобы решить, в какой базе данных хранится экземпляр модели. Он также используется для команд управления (вы должны ввести «manage.py sqlall sites» вместо «django.contrib.sites»).
Как обойти это ограничение? Ну, я думаю, что переименование приложения должно работать, если приложение никак не зависит от его имени. Но большинство приложений на самом деле используют имя приложения в URLconf, например (patterns("appname.views", ...)
), поэтому его тоже нужно изменить.
А если серьезно, зачем устанавливать два приложения с одинаковым именем? Если у них действительно одно и то же имя, они обычно имеют одинаковую функциональность (например, приложения, называемые «нумерацией страниц»), поэтому нет необходимости использовать более одного.