Django не может делать миграции для вложенного приложения - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь создать вложенное приложение в моем проекте django, но makemigrations не обнаруживает его.У меня есть следующая структура каталогов:

myproject/
├── db.sqlite3
├── manage.py
├── myproject
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── parentapp
    ├── admin.py
    ├── apps.py
    ├── childapp
    │   ├── admin.py
    │   ├── apps.py
    │   ├── __init__.py
    │   ├── migrations
    │   │   └── __init__.py
    │   ├── models.py
    │   ├── tests.py
    │   └── views.py
    ├── __init__.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py

А вот соответствующий код:

myproject / myproject / settings.py:

INSTALLED_APPS = [
    ...
    'parentapp',
    'parentapp.childapp',
]

myproject / parentapp / childapp / __ init__.py:

default_app_config = "parentapp.childapp.apps.ChildAppConfig"

myproject / parentapp / childapp / apps.py:

from django.apps import AppConfig

class ChildAppConfig(AppConfig):
    name = 'parentapp.childapp'

myproject / parentapp / childapp / models.py:

from django.db import models

class Child(models.Model):

    class Meta:
        app_label = "parentapp.childapp"

    name = models.CharField(max_length=100)

При попытке выполнить миграцию я вижу следующее поведение:

$ myproject/manage.py makemigrations
No changes detected

$ myproject/manage.py makemigrations childapp
No changes detected in app 'childapp'

$ myproject/manage.py makemigrations parentapp.childapp
'parentapp.childapp' is not a valid app label.  Did you mean 'childapp'?

Что яделать неправильно?Я вижу множество других многократно используемых приложений, которые имеют вложенные приложения (например, django-allauth).

1 Ответ

0 голосов
/ 31 января 2019

Вам необходимо удалить app_label из Child.Meta или изменить его на совместимое имя приложения (без «.», Строчных и подчеркиваний).

...