2013-12-23 46 views
0

我在Django管理中遇到問題。我使用的版本是1.5.5django admin中的MultipleObjectsReturned錯誤 - 但數據庫沒有重複

我有一個Booth模型,它有一個外鍵給我的AreaLayout模型,然後再回到另外幾個帶有外鍵和many2many鍵的模型。我的型號代碼可在pastebin上查看。 admin中問題的最初表示是AreaLayouts正在Booth admin中的選擇下拉列表中複製。當我嘗試保存新展臺時,MultipleObject退回錯誤(traceback)正在引發。我能跟蹤這回該Django是創建搶AreaLayout列表中的SQL查詢:

SELECT `venue_arealayout`.`id`, `venue_arealayout`.`name`, `venue_arealayout`.`description`, `venue_arealayout`.`area_id`, `venue_arealayout`.`additional_notes` 
FROM `venue_arealayout` 
INNER JOIN `venue_area` ON (`venue_arealayout`.`area_id` = `venue_area`.`id`) 
INNER JOIN `venue_venue` ON (`venue_area`.`venue_id` = `venue_venue`.`id`) 
INNER JOIN `venue_venue_venue_type` ON (`venue_venue`.`id` = `venue_venue_venue_type`.`venue_id`) 
INNER JOIN `venue_venuetype` ON (`venue_venue_venue_type`.`venuetype_id` = `venue_venuetype`.`id`) 
WHERE (`venue_arealayout`.`id` = 66) 

,該查詢產生重複在MySQL當我運行它。刪除最後2個JOIN會導致返回單個結果(這是所需的結果),而僅刪除最後一個連接仍會導致重複。

我試圖到位選擇特定字段和兩個結果在這種情況下運行該查詢與SELECT *幾乎相等。不同的是,有問題的場地有多個venuetypes,我得到了每個人的結果。有沒有什麼辦法可以告訴django不要爲這些查詢包含這些連接,或者有什麼方法可以讓AreaLayouts得到明顯的結果?

回答

1

我想你被ticket 11707中報告的錯誤所捕獲。其中一條評論提到它可能導致MultipleObjectsReturned例外。

我只能建議你停止使用limit_choices_to。你的模型相當複雜,所以我不能立即看到哪一個導致問題。

+0

謝謝Alasdair,我認爲你是對的。看起來我需要提出一個解決方法。 – hellsgate

相關問題