gordon_shamway
@gordon_shamway

Как можно связать 3 приложение?

Допустим есть 2 приложения в одном проекте(блог и фотогалерея) к каждом приложению нужно добавить систему комментариев дабы не дублировать код я хочу вывести комментарии как отдельное приложение и потом уже добавить в каждое приложение но не могу понять как это реализовать
Есть идея что в models добавить 2 приложений добавить
comment = models.ManyToManyField(Comment,related_name='name_project',blank=True)

и в comment
blog = models.BooleanField(default='False')
foto = models.BooleanField(default='False')

и потом через вьюшку вытягивать комментарии через эти поля,но не работает.
  • Вопрос задан
  • 328 просмотров
Решения вопроса 1
baterson
@baterson
python/django
Если комментарии должны быть связаны с разными моделями. Создайте абстрактный класс с общими полями и методами для дочерних классов и далее расширяйте их, указывая внешний ключ на модель нужного приложения.
class AbstractComment(models.Model):
	author = models.ForeignKey(YourUserModel, related_name='comments')
	text = models.TextField()
	pud_date = models.DateTimeField(auto_now_add=True)

	class Meta:
		abstract = True


class PhotoComment(AbstractComment):
	photo = models.ForeignKey(ImageModel, related_name='photo_comments')


class BlogComment(AbstractComment):
	blog = models.ForeignKey(BlogModel, related_name='blog_comments')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@1Moze
Если ты сделаешь то, что задумал, то комментарии будут общие. И на блог и на фото. Не усложняй себе жизнь.
Ответ написан
@iegor
Можешь через ContentType связать GenericForeignKey в комментариях, GenericRelation в нужных моделях
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы