几天前,我开始学习Django,为了进行实践,我决定制作一个小项目。
完成模型后,我尝试使用django.db将其映射到sqlite3中的关系模型。但是运行python manage.py makemigrations <app_name>
后,出现以下错误:
python manage.py makemigrations main
SystemCheckError: System check identified some issues:
ERRORS:
auth.Group_permissions: (fields.E336) The models is used as an intermediate models by '<django.db.models.fields.related.ManyToManyField: permissions>', but it does not have a foreign key to 'Group' or 'Permission'.
auth.User_groups: (fields.E336) The models is used as an intermediate models by '<django.db.models.fields.related.ManyToManyField: groups>', but it does not have a foreign key to 'User' or 'Group'.
auth.User_user_permissions: (fields.E336) The models is used as an intermediate models by '<django.db.models.fields.related.ManyToManyField: user_permissions>', but it does not have a foreign key to 'User' or 'Permission'.
contenttypes.ContentType: (models.E012) 'unique_together' refers to the nonexistent field 'models'.
我对它们的含义感到困惑(至少它们看起来很相似)。在我的模型中,实际上没有没有的ManyToMany关系,并且我从未修改过错误消息(用户,组)中列出的任何类。
我不知道我的模型代码是否与此相关。但是我对如何组织项目感到怀疑。我将 models.py 文件留空,并创建了一个包含所有模型文件的新目录“ models”。所以:
<m_app>
├── migrations
│
├── sumbmodels
│ └── __init__.py <--- imports modelA, modelB, etc
| └── modelA.py
| └── modelB.py
| └── ...
|
├── static
│ └── <my_app>
|
├── templates
│ └── <my_app>
|
├── tests
│ └── __init__.py
| └── testA.py
| └── testB.py
| └── ...
│
└── models.py <--- from .submodels import *
│
└── ...
很抱歉,如果没有太多信息,但是由于出现此错误,我不知道在哪里查看。
答案 0 :(得分:0)
首先,我建议您坚持使用Django基本设计-将所有模型保留在models.py
中。
当模型数量变大时-您可以考虑将这样的大型应用程序拆分为几个较小的 apps ,每个应用程序仅负责其功能。您的django项目可能包含多个应用程序。
如果要在多个文件中包含模型,请检查[此答案] (Split models.py into several files)。