2013-12-23 44 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

相关问题