Реклама

Тег → Like

  • EVILEG
  • Статья
  • 30 апреля 2017 г. 22:17

Django - Урок 023. Like Dislike система с помощью GenericForeignKey

Django, Like, Dislike, GenericForeignKey, GenericRelation

В статье по созданию системы закладок на Django был рассмотрен пример с использованием абстрактной модели для нескольких типов закладок, а именно для статей и комментариев к статьям. Также было акцентировано внимание на том, что поля моделей, который имели внешние ключи на различные модели, должны иметь одинаковые названия, чтобы поддерживать возможность создания единого интерфейса для добавления закладок. Это становится возможным благодаря так называемой "утиной типизации" (Duck typing) , которая подразумевает, что объекты, которые не имеют единой иерархии наследования, могут использоваться в одном и том же сценарии при наличии интерфейсов (методов) имеющих одинаковую сигнатуру.

Дословно принцип утиной типизации звучит следующим образом:

Если это выглядит как утка, плавает как утка и крякает как утка, то это, возможно, и есть утка.

If it looks like a duck, swims like a duck and quacks like a duck, then it probably is a duck.

То есть имея методы с одной и той же сигнатурой, мы можем использовать объекты, не связанные иерархией наследования, в одном и том же контексте.

В данной же статье рассмотрим вариант, когда для создания системы Like Dislike используется не две различных таблицы для статей и комментариев, и даже не одна, которая будет содержать по внешнему ключу на статью или комментарий (то есть две колонки, и при этом будет заполняться только одна из колонок в зависимости от того, к какому типу контента относится активность пользователя), а одна таблица, которая будет содержать:

  • content_type - тип контента, к которому относится запись
  • object_id - ID записи
  • content_object - генерируемый внешний ключ на запись, по сути объект контента
  • прочие дополнительные поля
Реклама
  • MinusNol
  • 18 октября 2017 г. 16:09

C++ - Тест 003. Условия и циклы

  • Результат - 85 баллов
  • MinusNol
  • 18 октября 2017 г. 15:41

C++ - Тест 002. Константы

  • Результат - 58 баллов
  • loctyr
  • 18 октября 2017 г. 10:25

Qt - Тест 001. Сигналы и слоты

  • Результат - 94 баллов
Последние комментарии
  • EVILEG
  • 18 октября 2017 г. 14:45

QML - Урок 031. Отключаем системное обрамление окна в QML и пишем код для обработки перемещения и ресайза окна

Задать свои property в окне и проверять их в методах изменения размера для topArea, bottomArea, rightArea, leftArea. В обработчиках onMouseYChanged, onMouseXChanged. Из-за отключен...

  • Troffe
  • 18 октября 2017 г. 14:35

QML - Урок 031. Отключаем системное обрамление окна в QML и пишем код для обработки перемещения и ресайза окна

После отключения системного обрамления не работают minimumHeight и minimumWidth. Что делать?

  • cordsac
  • 17 октября 2017 г. 15:29

Qt/C++ - Урок 045. SvgReader на Qt. Восстановление данных из файла SVG в QGraphicsScene

Sir I post is as a topic,please help me to solve this problem

  • EVILEG
  • 17 октября 2017 г. 11:44

Qt/C++ - Урок 045. SvgReader на Qt. Восстановление данных из файла SVG в QGraphicsScene

I think You have another version of SVG file. First, need to see content of SVG file. It is simple XML-format, therefore just need to research content. Do You want just open SVG file or ...

  • cordsac
  • 17 октября 2017 г. 2:09

Qt/C++ - Урок 045. SvgReader на Qt. Восстановление данных из файла SVG в QGraphicsScene

Sir,I tried your code for open ellipse item.but my program not open ellipse item.what should I need to do? here is my code : readsvg.cpp QL...

Сейчас обсуждают на форуме
  • cordsac
  • 17 октября 2017 г. 19:28

How can I open SVG file through QT

Okay,Thank you sir :)

  • EVILEG
  • 16 октября 2017 г. 20:34

Qt, Загрузка изображения в QImage

Сам view нужно поместить в внутри окна, а не просто создать его. Можете создать в графическом редакторе Qt Creator`а окно, набросать там QGraphicsView и потом посмотреть в сгенерированном...

  • mihenze
  • 15 октября 2017 г. 21:30

Рисуем линию QGraphicsItem за мышью

Большое спасибо!

  • EVILEG
  • 15 октября 2017 г. 18:58

Описание класса С++ в QtCreator

Для начала добавьте недостающие методы и участники для Q_PROPERTY. Для этого вызовите контекстное меню через ПКМ у Q_PROPERTY, там будет пункт "добавить недостающие члены". Автоматически...

  • EVILEG
  • 15 октября 2017 г. 15:34

Qt+Google Drive

Добрый день! Как-то не занимался этим, поэтому такого примера у меня нет в загашниках.