我正在使用 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
您必须将应用程序的名称 <
store
> 放入设置内的 INSTALLED_APPS 列表中。
我在 Django 4 中遇到了同样的问题。为了解决这个问题,我在每个应用程序目录中创建了
migrations/__init__.py
文件。因此,只需为每个应用程序运行这些命令即可:
mkdir appname/migrations
touch appname/migrations/__init__.py
然后使用
manage.py
:
python3 manage.py makemigrations
python3 manage.py migrate
并且成功了。
如果您的应用程序从未运行过迁移(该文件夹中没有迁移文件夹,也没有init.py),那么您必须在命令末尾使用应用程序名称:
python3 manage.py makemigrations <appname>
这将在该文件夹中创建迁移文件夹和 init.py。 之后,您删除应用程序名称,它将迭代已生成迁移的所有应用程序。
注意:如果您使用模型元类中的 app_label 切换模型分配给的应用程序名称,那么当迁移 app_label 模型指定的应用程序模型时,这些模型将被迁移,因此为实际定义的模型运行迁移将导致一条消息,表明该应用程序没有任何可迁移的内容。