У меня есть два приложения: пользователи и сообщения , с моделями CustomUser и Block в пользователях и моделью Post в сообщениях. Я хотел бы создать поле «Закладки» для пользователя ManyToMany, чтобы они могли добавлять в закладки любые сообщения, которые они хотят. Это выглядело бы примерно так:
class CustomUser(AbstractUser):
...
neighbors = models.ManyToManyField("CustomUser", blank=True)
blocks = models.ManyToManyField("Block", blank=True)
bookmarked = models.ManyToManyField("Post", blank=True)
...
Как видите, у меня уже есть несколько полей ManyToMany, но все они были для моделей из одного приложения пользователи . Что касается моего класса Post:
class Post(models.Model):
...
author = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
block = models.ForeignKey(Block, null=True, on_delete=models.SET_NULL)
...
Я уже импортировал две модели из приложения users , CustomUser и Block, в приложение posts . Я понимаю, что, импортируя Post в users models.py, он создает циклический импорт, по крайней мере, он дает мне следующую ошибку:
ImportError: cannot import name 'CustomUser' from partially initialized module 'users.models' (most likely due to a circular import)
Есть ли способ предотвратить это? Я знаю, что можно просто создать атрибут закладки в модели Post, а не в модели User, но я не хочу этого делать просто потому, что лично мне это немного странно. Известны ли вам какие-либо другие варианты, или мне придется создавать атрибут «Закладка» в «Пост», а не «Пользователь»?