python manage.py makemigrations:未检测到任何更改

问题描述 投票:0回答:3

我正在使用 django 开发一个项目,并且使用 pycharm 软件。在我的“store”目录中,我有一个名为“models”的Python包,其中有两个Python文件:- init.py 和

product.py
。我遇到的问题是,即使我从 init.py 文件中的产品模块导入“产品”类,我也无法使用该命令创建表。甚至两个模块也位于同一个包中。 这是product.py文件的代码:-

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=50)
    price = models.IntegerField(default=0)
    description = models.CharField(max_length=200, default='')
    image = models.ImageField(upload_to='products/')

这是 init.py 文件的代码:-

from .product import Product

但是当我在终端上运行命令时,我收到此错误:-

(venv) C:\Users\Admin\PycharmProjects\SMart>python manage.py makemigrations
No changes detected
python django pycharm
3个回答
0
投票

您必须将应用程序的名称 <

store
> 放入设置内的 INSTALLED_APPS 列表中。


0
投票

我在 Django 4 中遇到了同样的问题。为了解决这个问题,我在每个应用程序目录中创建了

migrations/__init__.py
文件。因此,只需为每个应用程序运行这些命令即可:

mkdir appname/migrations
touch appname/migrations/__init__.py

然后使用

manage.py
:

python3 manage.py makemigrations
python3 manage.py migrate

并且成功了。


0
投票

如果您的应用程序从未运行过迁移(该文件夹中没有迁移文件夹,也没有init.py),那么您必须在命令末尾使用应用程序名称:

python3 manage.py makemigrations <appname>

这将在该文件夹中创建迁移文件夹和 init.py。 之后,您删除应用程序名称,它将迭代已生成迁移的所有应用程序。

注意:如果您使用模型元类中的 app_label 切换模型分配给的应用程序名称,那么当迁移 app_label 模型指定的应用程序模型时,这些模型将被迁移,因此为实际定义的模型运行迁移将导致一条消息,表明该应用程序没有任何可迁移的内容。

© www.soinside.com 2019 - 2024. All rights reserved.