假设我有一个包含多个标签的博客条目。标签字段是我模型中的ManyToMany。我想获取所有博客条目,并且我希望获得所有标签的每个条目。
基本上我会做那样的事情
entries = Entries.objects.get(author=user) for entry in entries: tags[entry.pk] = entry.tags.all()
问题是我收到了MultipleObjectsReturned错误。
答案 0 :(得分:11)
如果您想使用author=user
返回所有条目,请使用filter()
entries = Entries.objects.filter(author=user)
目前,您正在使用get()
,它希望返回一个Entries
对象。由于Entries
author=user
多一Entries.MultipleObjectsReturned
,您会收到Entry
错误。
注意,对于Django,惯例是对您的模型使用单数名Entries
,而不是复数{{1}}。
答案 1 :(得分:3)
当您使用get
时,您正在使用filter
。
只有一个可能的结果时才使用get
。在这种情况下,您将返回对象本身,不一个查询集。然后没有什么可以循环,所以for
是无关紧要的。
如果您确实需要查询集,则必须使用filter
。