我有刪除我的對象的問題。我寫了一個刪除方法,獲取要刪除的對象的ID列表。這對於對象和具有外鍵的對象來說工作正常,但如果我與要刪除的對象有OneToOneField關係,則失敗。django刪除問題 - 刪除多個對象與一個OneToOneField關係 - 得到MultipleObjectsReturned錯誤
這是我的刪除方法:
@login_required
def delete_objects(request, model, selected_ids):
'''
capsulate a bulk delete method
delete all objects found for the given model
fails silently since model.delete() always fails silently
'''
object_list = model.objects.filter(pk__in=selected_ids)
count = object_list.count()
if count == 1:
name = model._meta.verbose_name.title()
else:
name = model._meta.verbose_name_plural.title()
object_list.delete()
request.user.message_set.create(message='Successfully deleted %s %s' % (count,name))
return
直到現在我剛剛與聯繫對象進行了測試。現在我爲我的模型添加了一個PhoneNumber模型。 PhoneNumber模型與聯繫人模型具有OneToOneField關係。如果沒有將PhoneNumber對象或一個PhoneNumber對象分配給Contact對象,我可以將其刪除。但是如果我將多個PhoneNumber對象與Contact對象關聯,則會出現錯誤。
這是錯誤信息,我得到:
MultipleObjectsReturned at /crm/contacts/
get() returned more than one PhoneNumber -- it returned 3! Lookup parameters were {'contact__pk': 4L}
Request Method: POST
Request URL: http://127.0.0.1:8000/crm/contacts/
Exception Type: MultipleObjectsReturned
Exception Value:
get() returned more than one PhoneNumber -- it returned 3! Lookup parameters were {'contact__pk': 4L}
我Django文檔閱讀
說:「其中有外鍵的對象指向任何對象被刪除將隨着它一起被刪除。「這是我想要完成的目標..但現在我得到一個錯誤。我想要的是要刪除的對象:D
其實這可能是一個設計問題?當我將多個PhoneNumber對象與OneToOneField關係聯繫到一個Contact對象時,是否是錯誤的?我選擇了OneToOneField,因爲電話號碼是唯一的,應該只與一個聯繫人有關。
接過話語權失控我的嘴:) – elo80ka 2009-12-31 23:33:30
:d救了我的一天。它現在有效。我認爲OneToOneField關係錯誤。我只是想確保沒有其他聯繫人可以與同一個PhoneNumber對象相關聯。但這與ForeignKeys正常工作。 OneToOne關係可以定義OneToOne關係,就像名稱告訴我們的那樣;-)謝謝大家! – 2009-12-31 23:49:20