Django错误-模型用作中间模型...没有“组”或“权限”的外键

时间:2019-12-27 05:56:23

标签: python django

几天前,我开始学习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 *
│  
└── ...

很抱歉,如果没有太多信息,但是由于出现此错误,我不知道在哪里查看。

1 个答案:

答案 0 :(得分:0)

首先,我建议您坚持使用Django基本设计-将所有模型保留在models.py 中。

当模型数量变大时-您可以考虑将这样的大型应用程序拆分为几个较小的 apps ,每个应用程序仅负责其功能。您的django项目可能包含多个应用程序。

如果要在多个文件中包含模型,请检查[此答案] (Split models.py into several files)。