我试图对我们一直在开发的这个应用程序进行迁移,但是当我运行python manage.py migrate时,我得到了以下错误:
从.author导入作者ImportError:无法从'hymnbook.models.author‘导入名称’hymnbook.models.author‘(C:\Users\Asus-PC\Py ImportError)
我正在使用python和django 3.0.6版本的3.7
ATT:所有型号都在同一个目录中,但在分隔文件中。
这是作者的模型
from django.db import models
from .hymn import Hymn
class Author(models.Model):
first_name = models.CharField(max_length=20, null=False, blank=False, default='')
last_name = models.CharField(max_length=20, null=False, blank=False, default='')
country = models.CharField(max_length=50, blank=True, null=False)
birth = models.DateTimeField()
death = models.DateTimeField()
hymn = models.ManyToManyField(Hymn, on_delete=models.CASCADE())
def __str__(self):
return self.first_name, self.hymn这就是赞美诗的模型
from django.db import models
import uuid
from .verse import Verse
from .language import Language
from .hymnbook import HymnBook
from .author import Author
from .genre import Genre
class Hymn(models.Model):
number = models.IntegerField()
title = models.CharField(max_length=100, blank=False, null=False)
genre = models.ForeignKey(Genre, on_delete=models.CASCADE)
language = models.ForeignKey(Language, on_delete=models.CASCADE)
hymnBook = models.ForeignKey(HymnBook, on_delete=models.CASCADE)
author = models.ManyToManyField(Author)
date = models.DateTimeField(blank=True, null=True)
def __str__(self):
return self.title如果有人帮我这个忙,我会非常感激的!
从现在开始我的感谢!
发布于 2020-05-18 08:40:24
正如@Sthino_IV在注释中提到的,您有一个循环进口
您还在每个模型上向对方声明了一个ManyToManyField。这不是定义多到多关系的典型方式。阅读关于比萨和配料的文档中的示例。
要解决这个问题,您需要编辑authors.py:
from .hymn import Hymnhymn = models.ManyToManyField(Hymn, on_delete=models.CASCADE())我还建议您更新您的Hymn模型,将author属性重命名为authors并添加一个related_name
class Hymn(models.Model):
# other fields go here
authors = models.ManyToManyField(Author, related_name='hymns')这将允许您访问Hymn实例上的所有作者,以及Author实例上的所有赞美诗。
您可能需要删除/migrations中的迁移文件并再次创建它。
发布于 2020-05-18 08:54:23
你为什么把所有的模型都保存在单独的文件里?这不是django标准,您可以直接在models.py文件中定义模型,并且可以在任何需要的地方导入
from .models import Author
#if model resides in same directoryfrom module.models import Author
#if model resides in another directory named "module"https://stackoverflow.com/questions/61863399
复制相似问题