【问题标题】:Django MultipleObjectsReturnedDjango MultipleObjectsReturned
【发布时间】:2011-11-02 16:36:58
【问题描述】:

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

基本上我会做这样的事情

条目=条目.objects.get(作者=用户) 对于条目中的条目: 标签[entry.pk] = entry.tags.all()

问题是我收到 MultipleObjectsReturned 错误。

【问题讨论】:

    标签: django many-to-many


    【解决方案1】:

    如果您想返回带有author=user 的所有条目,请使用filter()

    entries = Entries.objects.filter(author=user)
    

    目前,您正在使用get(),它期望返回一个Entries 对象。由于Entriesauthor=user 有多个,因此您会收到Entries.MultipleObjectsReturned 错误。

    注意,对于 Django,约定是为您的模型使用单数名称 Entry,而不是复数 Entries

    【讨论】:

      【解决方案2】:

      你正在使用get,而你应该使用filter

      仅当只有一种可能的结果时才使用get。在这种情况下,您将返回对象本身,不是一个查询集。然后没有什么可以循环的,所以for 是无关的。

      如果你真的期望一个查询集,你必须使用filter

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-05
        • 2021-03-25
        • 1970-01-01
        • 1970-01-01
        • 2021-07-09
        • 2021-07-07
        • 2022-01-25
        • 2016-08-25
        相关资源
        最近更新 更多