В настоящее время я работаю над большим проектом Django (версия 1.10.7) и сталкиваюсь с ошибкой с полем модели в субприложении.Вот как выглядит основная структура:
project/
app_one/
__init__.py
apps.py
models.py
urls.py
views.py
app_two/
__init__.py
apps.py
models.py
urls.py
views.py
Рассматриваемая модель и поле выглядят так (project/app_one/app_two/models.py
):
class SampleModel(model.Model):
parent = models.ForeignKey('self', null=True, blank=True, related_name='members')
Когда я запускаю python manage.py makemigrations app_one.app_two
в корнепапка Я получаю это сообщение об ошибке:
Файл ... / django / db / models / utils.py ", строка 23, в make_model_tuple" должна иметь форму 'app_label.ModelName'. "% model ValueError: Недопустимая ссылка на модель 'app_one.app_two.SampleModel'. Строковые ссылки на модель должны иметь форму 'app_label.ModelName'.
Вот код из других соответствующих файлов:
project / settings.py :
INSTALLED_APPS = filter(None, (
...
'app_one',
'app_one.app_two',
...
)
project / app_one / app_two / apps.py :
from __future__ import unicode_literals
from django.apps import AppConfig
class AppOneAppTwoConfig(AppConfig):
name = 'app_one.app_two'
label = 'app_one.app_two'
project / app_one / app_two / __ init __. Py :
default_app_config = 'app_one.app_two.apps.AppOneAppTwoConfig'
Я считаю, что ошибка в том, что Django ищет только один .
в полном названии модели (app_one.app_two.SampleModel
), чтобы отделить ярлык приложения от названия модели в django/db/models/utils.py
, и, поскольку в этом случае их два, произойдет сбой.
У меня вопрос : Это выглядит каккак странно, что Django не следует учитывать ... есть ли в любом случае сохранение точечной нотации метки приложения и все еще иметь внешнюю ссылку на ForeignKey во вложенном приложении?