【问题标题】:Creating migrations for a reusable Django app为可重用的 Django 应用程序创建迁移
【发布时间】:2019-06-19 01:27:20
【问题描述】:

我正在编写一个可重用的 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”包含一个测试项目。

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

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

有什么建议吗?

我的意思是有一个测试项目将在“/django-mycleverapp/django_mycleverapp/migrations”中构建迁移?

【问题讨论】:

    标签: django django-migrations django-apps


    【解决方案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
    

    如果您不希望您的应用成为“示例”项目的一部分,而是希望它被您的项目“示例”分离和使用,则必须使用 pip 将其安装到您的项目中(这需要在您的应用的根目录中有一个setup.py)。

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

    git+https://gitlab.com/myuser/myproject.git@v1.0#egg=myapp_name
    

    如果您还没有在 git 存储库上发布您的应用,您可以将应用的绝对路径添加给您requirements.txt

    /path/to/django-mycleverapp/django_mycleverapp/
    

    使用 pip 时不要忘记在 virtualenv 中工作。

    【讨论】:

    • 那是回答如何进行一般迁移。是否应该始终有一个 example 项目具有正确设置的设置并可用于生成迁移?
    猜你喜欢
    • 2015-03-22
    • 2016-09-28
    • 2016-05-30
    • 2011-03-11
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2016-04-14
    相关资源
    最近更新 更多