我正在尝试迁移我们一直在开发的这个应用程序,但是当我运行python manage.py migrate
时,我遇到了以下错误:
from .author import Author ImportError: cannot import name 'Author' from 'hymnbook.models.author' (C:\Users\Asus-PC\Py charmProjects\hinario\ourhymnbook-py\novo\hymnbook\hymnbook\models\author.py)
我正在使用这个版本 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
如果有人能帮我,我会非常感激的
从现在起,我感谢你
正如@Sthino_IV在评论中提到的,你有一个circular import:
您还向另一个模型声明了每个模型上的ManyToManyField。这不是典型的多对多关系的定义。阅读文档中关于pizza and toppings的示例
要解决此问题,您需要编辑authors.py:
from .hymn import Hymn
hymn = models.ManyToManyField(Hymn, on_delete=models.CASCADE())
我还建议您更新
Hymn
模型,将author
属性重命名为authors
,并添加related_name
:这将允许您访问
Hymn
实例上的所有作者,以及Author
实例上的所有赞美诗您可能需要删除/migrations中的迁移文件,然后重新创建它
你为什么把所有的模型都分开归档?。这不是django标准 您可以直接在
models.py
文件中定义模型,并可以在任何需要的地方导入相关问题 更多 >
编程相关推荐