为可重复使用的Django应用创建迁移

时间:2019-01-25 08:20:21

标签: django django-migrations django-apps

我正在编写一个可重用的Django应用,并且在创建迁移时遇到问题。

我看过this question,但仍然感到困惑。我具有以下目录结构:


django-mycleverapp/
django-mycleverapp/django_mycleverapp/
django-mycleverapp/django_mycleverapp/__init__.py
django-mycleverapp/django_mycleverapp/apps.py
django-mycleverapp/django_mycleverapp/models.py
django-mycleverapp/django_mycleverapp/urls.py
django-mycleverapp/django_mycleverapp/views.py
django-mycleverapp/example/
django-mycleverapp/example/manage.py
django-mycleverapp/example/example/
django-mycleverapp/example/example/__init__.py
django-mycleverapp/example/example/settings.py
django-mycleverapp/example/example/urls.py
django-mycleverapp/setup.py

如您所见,目录“ django_mycleverapp”包含可重复使用的应用程序,目录“ example”包含测试项目。

我在“示例”设置的INSTALLED_APPS部分中包含了“ django_mycleverapp”模型。

但是,运行python ~/example/manage.py makemigrations django_mycleverapp不会建立任何迁移。

有什么建议吗?

我打算如何创建一个测试项目,以在“ / django-mycleverapp / django_mycleverapp / migrations”中构建迁移?

1 个答案:

答案 0 :(得分:1)

您的应用程序应位于项目目录中。您的目录层次结构应如下所示。

django-mycleverapp/
django-mycleverapp/example/
django-mycleverapp/example/django_mycleverapp/
django-mycleverapp/example/django_mycleverapp/__init__.py
django-mycleverapp/example/django_mycleverapp/apps.py
django-mycleverapp/example/django_mycleverapp/models.py
django-mycleverapp/example/django_mycleverapp/urls.py
django-mycleverapp/example/django_mycleverapp/views.py
django-mycleverapp/example/manage.py
django-mycleverapp/example/example/
django-mycleverapp/example/example/__init__.py
django-mycleverapp/example/example/settings.py
django-mycleverapp/example/example/urls.py
django-mycleverapp/example/setup.py

如果您不希望您的应用成为“示例”项目的一部分,而是希望将其与“示例”项目分开并使用,则必须使用{{1 }}(这需要在应用程序的根目录中有一个pip)。

例如,如果您已将应用程序发布在git存储库“ https://gitlab.com/myuser/myproject.git”上,则可以添加到我们的setup.py

requirements.txt

如果您尚未在git存储库中发布您的应用,则可以为您添加应用的绝对路径git+https://gitlab.com/myuser/myproject.git@v1.0#egg=myapp_name

requirements.txt

使用/path/to/django-mycleverapp/django_mycleverapp/ 时不要忘记在virtualenv中工作。