Подсказка в ошибке, поскольку у вас действительно есть циклический импорт.
Posts.models.py будет иметь from Categories.models import Category
вверху, так как вы используете его в качестве внешнего ключа и, как вы Теперь используя Post в методе posts категории, он будет иметь from Posys.models import Post
. Вам нужно исправить это, что вы можете сделать одним из трех способов, в зависимости от того, есть ли у вас другие модели или методы, использующие класс Post изнутри Модель категорий.
Если вы это сделаете, то можете использовать один из этих двух
- Измените foreignKey для передачи строки, а не объекта Category, так что
class Post(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
author = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(verbose_name="Title")
content = models.TextField(verbose_name="Content")
tag = models.CharField(verbose_name="Meta", max_length=70, blank=True)
category = models.ForeignKey("Category", on_delete=models.CASCADE, null=True)
Переместите импорт из верхней части Categories / models.py в методе posts, чтобы он импортировался локально
class Category(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
title = models.CharField(max_length=20, verbose_name="Title")
@property
def posts(self):
from Posts.models import Post
return Post.objects.filter(category_id=self.id).count()
Если вы этого не сделаете, и мы не можем определить, из чего после публикации вы можете просто использовать имя `` `post_set`` в классе Category и вообще избежать импорта. https://docs.djangoproject.com/en/3.0/topics/db/models/#be -careful-with-related-name-and-related-query-name
@property
def posts(self):
return self.post_set.count()
Это также решит проблему