Я несколько раз просматривал документы Django в отношении структуры contenttypes, и я просто недостаточно понимаю это, чтобы реализовать общие отношения в моем проекте. Я искал онлайн-примеры или учебники по этому вопросу, но я не могу найти ни одного. Назовите меня глупым, но мне нужна помощь в этом (пожалуйста, не отвечайте, просто связавшись с документами). Основываясь на нехватке ресурсов в Интернете, я верю, что если вы ответите на этот вопрос с помощью тщательного примера, ваш ответ может быть самым полезным примером онлайн на сегодняшний день в отношении общих отношений django (бонус!).
Итак, мой вопрос: может ли кто-нибудь показать простой пример моделей и, возможно, пару строк кода, показывающих, как взаимодействовать с экземплярами универсальной модели?
Как вдохновение, вот что я считаю очень распространенной ситуацией:
У сайта есть медиа-элементы, которые в основном обрабатываются одинаково, но немного отличаются. Например, скажем, есть изображения и видеоматериалы, и пользователи могут "любить" элемент или "комментировать" по элементу. К подобным и комментариям следует относиться одинаково, независимо от того, размещены ли они на изображении или элементе видео. Итак, если в пользовательском альбоме есть ItemView для просмотра изображения или видео, возможны следующие виды вызовов: mediaitem.comments.all()
или len(mediaitem.likes.all())
или comment.user_who_commented
, не зная, какой вид медиа-элемента он (изображение или видео).
Я полагаю, вам понадобится шесть моделей для этого:
- Абстрактный
MediaItem
класс - Два разных типа элементов мультимедиа:
ImageItem
иVideoItem
- Абстрактный
MediaItemActions
класс - Два разных типа действий, которые могут быть сделаны в отношении элементов мультимедиа:
Like
иComment
Если вы знаете, как использовать эту функцию Django, пожалуйста, покажите нам полный пример! Я чувствую, что это будет чрезвычайно мощный инструмент, и я боюсь использовать его в своем приложении. Чем яснее, тем лучше.