Я пытаюсь внедрить систему друзей в django, и у меня возникают проблемы с проверкой, когда два пользователя уже являются друзьями (для предотвращения двойного запроса)
Система работает, когда каждый пользователь по отдельности сопоставляется с одним и тем жеДруг объект для обозначения дружбы.
Рассмотрим следующий код
models.py
class Friendship(models.Model):
# some other stuff ...
class FriendshipMapping(models.Model):
user_id = models.ForeignKey('User',related_name="friendship_mappings",on_delete=models.CASCADE)
friendship_id = models.ForeignKey('Friendship',related_name="mapped_by",on_delete=models.CASCADE)
# some other stuff ...
class User(AbstractUser):
friendships = models.ManyToManyField(
'Friendship',
through='FriendshipMapping',
symmetrical=True,
through_fields=('user_id','friendship_id'),
related_name='joined_users',
)
# some other stuff ...
Теперь скажите, что у меня 2 User
объектов, и я хотел бы выяснить, указан ли объект дружбычтобы оба из них, не получая один из их полного набора дружбы и итерируя через это.Я попробовал следующее
existing_friendship = user1.friendships.get(joined_users__in=user2)
, но оно возвращается пустым, даже когда я знаю, что есть дружба, на которую они оба указывают.
Существует очень мало документации по этому виду поиска, и я не уверен, что мой синтаксис действителен или что на самом деле делает __in
.Возможно ли что-то подобное в Django?
Хотелось бы помочь!