擅长:python、mysql、java
<p>正如@Sthino_IV在评论中提到的,你有一个<a href="https://stackabuse.com/python-circular-imports/" rel="nofollow noreferrer">circular import</a>:</p>
<ul>
<li>author.py正在尝试从.hymm导入</li>
<li>hymn.py正在尝试从.author导入</li>
</ul>
<p>您还向另一个模型声明了每个模型上的ManyToManyField。这不是典型的多对多关系的定义。阅读文档中关于<a href="https://docs.djangoproject.com/en/3.0/topics/db/models/#many-to-many-relationships" rel="nofollow noreferrer">pizza and toppings</a>的示例</p>
<p>要解决此问题,您需要编辑authors.py:</p>
<ul>
<li>删除<code>from .hymn import Hymn</code></li>
<li>删除<code>hymn = models.ManyToManyField(Hymn, on_delete=models.CASCADE())</code></li>
</ul>
<p>我还建议您更新<code>Hymn</code>模型,将<code>author</code>属性重命名为<code>authors</code>,并添加<code>related_name</code>:</p>
<pre><code>class Hymn(models.Model):
# other fields go here
authors = models.ManyToManyField(Author, related_name='hymns')
</code></pre>
<p>这将允许您访问<code>Hymn</code>实例上的所有作者,以及<code>Author</code>实例上的所有赞美诗</p>
<p>您可能需要删除/migrations中的迁移文件,然后重新创建它</p>