Другая идея - использовать сигнал post_save
вроде так:
from django.db.models.signals import post_save
from voting.models import Vote
def check_user(sender, instance, **kwargs):
if instance.user == instance.object.user:
instance.delete()
# do some other stuff to tell the user it didn't work
post_save.connect(check_user, sender=Vote)
Преимущество этого по сравнению с переопределением VoteManager.record_vote
заключается в том, что он менее тесно связан с модулем голосования, и если они вносят изменения, он с меньшей вероятностью нарушит ваш код.
edit : как и в ответе Глейдера, вы должны убедиться, что все объекты, по которым вы голосуете, имеют атрибут 'user'.