Django models cyclic import

Я прочитал несколько соответствующих постов по вопросу о взаимном импорте (циркулярном). Я работаю над приложением django, вот как я столкнулся с проблемой:

У меня есть два приложения, первое articles, второе tags

Моя модель статьи имеет поле many to many, для указания соответствующих тегов:

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

Обычно я использую модуль для объединения этих определений классов, обычно не сталкиваясь с проблемой порядка разрешения методов. Однако в django рабочий процесс требует размещения классов в отдельных папках, я буду очень рад любому предложению.

Попытка удалить эту строку

from articles.models import Article

Не импортируйте модель Tag в модель Article, а используйте вместо этого строковую ссылку класса.

# 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: Получить модель из строки?

Вернуться на верх