我在django项目中向我的记者应用程序添加了一个简单的模型

class Municipalities(models.Model):
    namelsad = models.CharField(max_length=100)
    geom = gismodels.MultiPolygonField(srid=4326)

当我python3 manage.py makemigrations reporter
上面写着no changes detected in reporter
当我python3 manage.py migrate reporter
Operations to perform:
  Apply all migrations: reporter
Running migrations:
  No migrations to apply.

但是没有postgresql报告城市数据库表
报告器包含在已安装的应用程序中
市政模型位于reporter app中的model.py文件中
我应该添加一个counties表,并在postgresql中手动删除它,并尝试添加市政模型来创建一个表
城市也属于django_content_类型
python - Django模型不创建PostgreSQL表-LMLPHP
但是没有市政当局的表格
更新
已将Class Municipalities更改为Class Muni
python3 manage.py makemigrations reporter
然后它问我
Did you rename the reporter.Municipalities model to Muni? [y/N]

如果我单击y
然后运行migrate
给我
django.db.utils.ProgrammingError: table "reporter_municipalities" does not exist

但我很困惑,桌子永远不存在!!
因为“记者市”,我现在根本不能移民到DB

最佳答案

当Django查找迁移时,它会搜索在reporter中配置的应用程序INSTALLED_APPS。它使用AppConfig或应用程序名来检索完整的包名,即my_project.reporter。此软件包必须在PYTHONPATH中提供。它应该只在您的开发项目中可用,但可能在您的virtualenv中“安装”了它。它可以运行pip install .(不运行-e)或(使用某些配置)运行测试(我在tox中见过这种情况)。
在这个场景中,python有两个my_project.reporter可用,但是您编辑/更新了“第二个”。当您运行./manage.py makemigrations时,python首先找到您没有更改的代码(virtualenv中已安装的代码),因此它找不到更新。
要检查是否有此副本,您可以:
卸载项目(pip uninstall <django-project>)以查看它是否引用“符号链接”
如果是这样的话你会看到
Uninstalling <PROJECT>:Would remove: /data/PROGETTI/UNICEF/odk/.venv/lib/python3.6/site-packages/<PROJECT>.egg-linkProceed (y/n)? y
注意行末的egg-link
或者
打开shell并键入import <full_path_of_reporter> AS pkg; print(pkg.__file__)并检查文件路径

10-04 21:49