django 模型循环导入

django models cyclic import

关于相互进口(通告)的问题,我看了一些相关的帖子。我正在开发一个 Django 应用程序,下面是我如何 运行 一个问题:

我有两个应用程序,第一个 articles,第二个 tags

我的文章模型有一个多对多的字段,以表明相关标签:

articles/models.py

from django.db import models
from tags.models import Tag

class Article(models.Model):
    tags = models.ManyToManyField(Tag)

然而,在我的 tags 应用程序中,我还需要导入 Article 模型来实现方法:

tags/models.py

from django.db import models
from articles.models import Article

# Create your models here.
class Tag(models.Model):
    title = models.CharField(max_length=100)
    content = models.CharField(max_length=255)

    def getAritcleLength():
        pass

    def getQuestionLength():
        pass

我通常使用一个模块来组合那些class定义,通常不会运行按照方法解析顺序发出。然而,在 django 的工作流程中,我们需要将 classes 放入单独的文件夹中,我将很高兴提出任何建议。

尝试删除这个字符串

from articles.models import Article

不要在 Article 模型中导入 Tag 模型,而是使用 class 的字符串引用。

# articles/models.py

from django.db import models


class Article(models.Model):
    tags = models.ManyToManyField('Tag')    OR: you can use app_name.model_name format as well

另一种方法是使用 Django 的方法从字符串中获取模型,然后将该变量用于模型引用。 Django: Get model from string?