Для реализации лайков (Голосов) отлично подходит
GenericForeignKey
- позволяет ссылаться на различные объекты и вообще данное решение более универсальное.
class Like(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
related_name='likes',
on_delete=models.CASCADE)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
Я рекомендую посмотреть как устроена система лайков
тут (* может быть заблокирован на территории России)
UPD:
Если ссылка выше не работает (и нет VPN), вариант заглянуть на
GitHub Тут исходники приложения из ссылки выше.
Возможно без обьяснения будет не очень понятно что здесь реализовано и почему именно так,
но проект хорош как образец.