【问题标题】:Django migrations no changes detected after changing directory structureDjango迁移更改目录结构后未检测到更改
【发布时间】:2020-01-13 06:03:00
【问题描述】:

我已经使用这个目录结构创建了一个 Django 项目:

bi3online
    __init__.py
    migrations
        __init__.py
    static
    templates
    media
    manage.py
    models.py
    urls.py
    views.py
    wsgi.py
    ...

当我运行 python manage.py makemigrationspython manage.py migrate 时,它只会为 auth 应用程序创建迁移,然后当我再次尝试时,它说没有检测到任何更改。迁移似乎只适用于应用,但我不确定。

models.py

from django.db import models


class Book(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField(null=False, blank=False, max_length=64)

【问题讨论】:

  • 它检测模型,即任何models 模块/包中的任何INSTALLED_APPS 中的Model 子类。
  • 你用过python manage.py startproject argstartapp arg吗?
  • @iDrwish 我用startproject bi3online 创建了项目,但我没有创建任何应用程序。
  • 你怎么会有models.py,这只能用startapp创建?我不确定migrate 没有它也能正常工作。你有理由避开startapp吗?
  • 您需要使用应用程序。如果模型不在应用程序中,它们通常将无法工作。

标签: python django django-migrations


【解决方案1】:

只是总结一下 cmets 并带您找到解决方案:

Django 与应用程序一起工作。该应用程序是一个包含models.pyapps.pyviews.py 模块(可选其他)的文件夹。

假设您的应用名为books。要让 Django 将该文件夹识别为应用程序,您需要将您的应用程序添加到 settings.py

INSTALLED_APPS = [
    ... ,
    'books'
]

您需要在books 文件夹中的apps.py 模块来拥有这个:

from django.apps import AppConfig


class BooksConfig(AppConfig):
     name = 'books'

你应该有以下项目结构:

bi3online
    books
        migrations
            __init__.py
        __init__.py
        models.py
        views.py
    bi3online
        __init__.py
        manage.py
        urls.py
        wsgi.py
    static
    templates
    media

【讨论】:

    猜你喜欢
    • 2017-08-22
    • 2021-09-19
    • 2019-05-30
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 2019-01-17
    相关资源
    最近更新 更多