我正试图在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有可能吗?
会很乐意帮忙的!
发布于 2019-04-17 12:32:24
您可以查询与Friendship中的两个用户关联的FriendshipMapping,如thiss:
existing_friendships = (Friendship.objects
.filter(mapped_by__user_id=user1)
.filter(mapped_by__user_id=user2)
)https://stackoverflow.com/questions/55719551
复制相似问题