Как смоделировать симметричные отношения с помощью django?

Давайте воспользуемся классическим примером друзей.

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. Кто-нибудь, пожалуйста, остановите меня.

22
задан Conley Owens 5 November 2010 в 01:33
поделиться