LINUX.ORG.RU

История изменений

Исправление Goury, (текущая версия) :

Просто закэшируй результат лайков, хоть в бд, хоть в джанге (не забыв принять взвешенное решение и записав его в диздок, чтобы потом делать одинаково везде, а не как попало).

Более продвинутый уровень — регулярно перекэшировать лайки, а функцией только из кэша брать данные.
Суперпродвинутый уровень — предсказывать запросы лайков и заранее кэшировать нужные, а менее нужные перекэшировать пореже.

Простой уровень: храни недавно лайканые элементы в ОЗУ.

Но вообще class Vote как-то мутно выглядит на первый взгляд. Но надо смотреть что там с архитектурой для выводов.

как такое сделать правильно

Смотреть надо на конкретный кейс в рамках конкретной ситуации. Я бы сделал модель с общими полями отдельно и в каждом элементе делал бы ссылку на модель с разными полями — тогда надо было бы выбрать пятерых из этой общей модели и довыбрать пятерых по ссылкам.

Исходная версия Goury, :

Просто закэшируй результат лайков, хоть в бд, хоть в джанге (не забыв принять взвешенное решение и записав его в диздок, чтобы потом делать одинаково везде, а не как попало).

Более продвинутый уровень — регулярно перекэшировать лайки, а функцией только из кэша брать данные.
Суперпродвинутый уровень — предсказывать запросы лайков и заранее кэшировать нужные, а менее нужные перекэшировать пореже.

Простой уровень: храни недавно лайканые элементы в ОЗУ.

Но вообще class Vote как-то мутно выглядит на первый взгляд. Но надо смотреть что там с архитектурой для выводов.