Django MultipleObjectsReturned

时间:2011-11-02 16:36:59

标签: django many-to-many

假设我有一个包含多个标签的博客条目。标签字段是我模型中的ManyToMany。我想获取所有博客条目,并且我希望获得所有标签的每个条目。

基本上我会做那样的事情

entries = Entries.objects.get(author=user)
for entry in entries:
     tags[entry.pk] = entry.tags.all()

问题是我收到了MultipleObjectsReturned错误。

2 个答案:

答案 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