首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用related_name查询M2M

如何使用related_name查询M2M
EN

Stack Overflow用户
提问于 2017-07-10 07:31:46
回答 1查看 51关注 0票数 1

我有两个与M2M字段非常相似的模型,不知何故,我试图查询其中一个,它工作得很好,但当我用另一个尝试相同的代码时,它给了我错误。我能找到的唯一区别是related_name

我找到了一个解决方法,但我仍然很好奇,如果我下次遇到同样的问题,我如何才能让它工作。

(我只写了我拥有的M2M字段,而且每个模型只有一个M2M字段,尽管仔细想想,如果有多个M2M怎么办,但这不是这个问题)

这是我的工作模型

代码语言:javascript
复制
class Team(View):
    members = models.ManyToManyField(User, blank=True)

这是具有上述模型的视图(跳过classdef post等)

代码语言:javascript
复制
user = User.objects.filter(id=111).first()
all_members = user.Team_set.filter()  # this would return all

下面是给我带来问题的模型

代码语言:javascript
复制
class Room(View):
    participants = models.ManyToManyField(User, blank=True, related_name='participants')

这是具有上述模型的视图

代码语言:javascript
复制
user = User.objects.filter(id=111).first()
all_p = user.room_set.filter()  # this then gives me error of 'User' object has no attribute 'room_set'

提前感谢您的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-10 07:33:55

在定义related_name时,您需要这样使用它:

代码语言:javascript
复制
Model.related_name.* 

别名related_model_set被销毁。

如上所述,您的代码应该如下所示:

代码语言:javascript
复制
user = User.objects.filter(id=111).first()
all_p = user.participants.filter()  # this then gives me error of 'User' object has no attribute 'room_set'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45002009

复制
相关文章

相似问题

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