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

2 つのオブジェクトnameの値は、save

使用getしていて、返された行が複数ある場合、発生します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

name=save のデータベースに複数のレコードがあるためです。filter() を使用し、1 つだけが必要な場合はインデックス 0 のものを取得するか、そのケースを個別に適切に処理します。

于 2013-01-25T16:49:01.520 に答える