Давайте воспользуемся классическим примером друзей.
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 в отношениях, и всех Дружбы, где этим пользователем является user2.
Я подумываю написать свой собственный SymmetricKey. Кто-нибудь, пожалуйста, остановите меня.