首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果多个字段包含某个外键,则获取对象

如果多个字段包含某个外键,则获取对象
EN

Stack Overflow用户
提问于 2019-04-17 03:44:12
回答 1查看 47关注 0票数 0

我正试图在django中实现一个朋友系统,并且在验证两个用户是否已经是朋友时遇到了困难(以防止双重请求)。

该系统的工作方式是让每个用户分别映射到同一个朋友对象,以表示友谊。

考虑以下代码

models.py

代码语言:javascript
运行
复制
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对象,我想知道它们是否都指向了一个友谊对象,而没有得到它们的一个完整的友谊集,并迭代它。我试过以下几种方法

代码语言:javascript
运行
复制
existing_friendship = user1.friendships.get(joined_users__in=user2)

但当我知道有一种友谊是他们都指向的时候,它仍然是空的。

关于这类查找的文档很少,我不确定我的语法是否有效,或者__in最初到底在做什么。这样的事情在django有可能吗?

会很乐意帮忙的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-17 12:32:24

您可以查询与Friendship中的两个用户关联的FriendshipMapping,如thiss:

代码语言:javascript
运行
复制
existing_friendships = (Friendship.objects
    .filter(mapped_by__user_id=user1)
    .filter(mapped_by__user_id=user2)
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55719551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档