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