我有两个非常相似的模型与M2M字段,不知何故我试图查询其中一个完美的工作,但当我尝试相同的代码与另一个,它给了我错误。我能找到的唯一区别是related_name
我找到了一个解决方法,但我仍然很好奇如果下次遇到同样的问题我怎么能让它工作。
(我只写了我拥有的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'
提前感谢您提供任何帮助
答案 0 :(得分: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'