Как написать приложение django один IP один like?
Во время, когда полмира сидит за NAT-ом, никак.
Частный случай  - сделайте  составной уникальный индекс 
--
IntegerField - жирновато будет.  SmallInt/ TinyInt
Попробуйте вместе с ip еще nginx user_id  использовать либо какой отпечаток браузера (первая строка из гугл look-in.net/2012/08/19/browser-fingerprint)
class Like(Model):
    ip = IPAddressField()

class Thing(Model):  # Вещь, которую нужно лайкать
    likes = ManyToManyField(Like)
При лайке проверяешь в БД объект модели Like с данным айпишником:
1) Если его нет, создаёшь и добавляешь к своей сущности Thing.likes.create(ip=your_ip_goes_here)
2) Если есть - получаешь этот лайк и добавляешь к Thing: Thing.likes.add(like)
В общем случае будет примерно такой кусок кода:try:
    if not thing.likes.filter(ip=your_ip_goes_here).exists():
        like = Like.objects.get(ip=your_ip_goes_here)
        thing.likes.add(like)
except Like.DoesNotExist:
    like = thing.likes.create(ip=your_ip_goes_here)
Конечно, это лишь один из вариантов.UPD:
Исправил ошибку в коде.