2017-07-09 65 views
1

我有两个真正与M2M领域相似的模型,不知怎的,我试图查询其中一个完美的作品,但是当我尝试使用另一个代码时,它给了我错误。我可以找到的唯一区别是related_name如何用related_name查询M2M

我发现了一种解决方法,但我仍然好奇,如果下次遇到同样的问题,我该如何才能使其工作。

(我只写了我拥有的M2M领域,每个模型只有一个M2M领域,即使想起它,如果有多个M2M可以做什么,但是这不是这个问题)

这是工作模型我有

class Team(View): 
    members = models.ManyToManyField(User, blank=True) 

这是与上述模型的图,(跳过class,所述def post等)

user = User.objects.filter(id=111).first() 
all_members = user.Team_set.filter() # this would return all 

下面是给我的问题

class Room(View): 
    participants = models.ManyToManyField(User, blank=True, related_name='participants') 

这与上面的模型视图

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' 

预先感谢任何帮助

回答

1

当定义related_name您需要使用它的模型像这样:

Model.related_name.* 

别名related_model_set被破坏。

随着中说你的代码应该是这样的:

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' 
+0

啊!好吧,所以它会使它像'user' – Tsuna

+0

那样的工作〜thx thx,但需要等待几分钟,直到我可以接受答案 – Tsuna

+0

@Tsuna很高兴它帮助! – pythad