3

对此的任何帮助都会很棒。我正在使用 python 2.7 和 django 1.2 这是我的代码:

for save in saved: #list to iterate
    try:
        sect = obj.get(name=save) #obj is a RelatedManager
    except: #if two sections have the same name
        sect = obj.filter(name=save)
    else:
        #finish my code

MultipleObjectsReturned每次遇到get()语句时我都会收到错误消息。我不是 python 专家,所以我想我错过了一些简单的东西。

4

2 回答 2

9

两个对象的name值等于save

使用时get返回的行数超过 1 行MultipleObjectsReturned

我认为你应该明确地捕捉到这一点,因为你的 except 也会捕捉DoesNotExist到错误(以及所有其他错误)

    from django.core.exceptions import MultipleObjectsReturned

    try:
        sect = obj.get(name=save) #obj is a RelatedManager
    except MultipleObjectsReturned: #if two sections have the same name
        sect = obj.filter(name=save)[0]
    else:
        #finish my code
于 2013-01-25T16:55:55.850 回答
3

因为您在数据库中有超过 1 条 name=save 的记录。如果您只想要一个或单独正确处理这种情况,请使用 filter() 并在索引 0 处获取一个。

于 2013-01-25T16:49:01.520 回答