underwit
class Player(models.Model):
login = models.CharField(max_length=25, unique=True)
friends = models.ManyToManyField('self', related_name='friend', symmetrical=False, blank=True)
>>> p1 = Player.objects.get(pk=1)
>>> p2 = Player.objects.get(pk=2)
>>> if p1 in p2.friends:
>>> print "My friend"
Теоретически может подойти. Нужно попробовать. Хотя могут возникнуть проблемы с оповещением пользователя о запросе на дружбу