Используйте классический пример друзей.
class Friendship(models.Model):
user1 = models.ForeignKey(User, related_name='friends1')
user2 = models.ForeignKey(User, related_name='friends2')
handshakes = models.PositiveIntegerField()
hugs = models.PositiveIntegerField()
# other silly data
Двое друзей в дружбе (user1 и user2) должны быть полностью равны. Я должен быть в состоянии сказать, что (user1, user2) уникальны, и не нужно беспокоиться о (user2, user1), случайно появляющемся. Я должен был бы легко получить всех друзей данного пользователя, но вместо этого мне пришлось бы написать собственный менеджер или создать другой способ получения всех Друзей, в которых этот пользователь является user1 в отношениях, и всех Друзей, где этот пользователь является пользователем2.
Я подумываю о попытке написать свой собственный SymmetricKey. Кто-то, пожалуйста, остановите меня.