2013-12-23 1 views
0

У меня проблема с администратором Django. Я использую версию 1.5.5MultipleObjectsReturned error in django admin - но в базе данных нет дублирования

У меня есть модель стенда, у которой есть внешний ключ к моей модели AreaLayout, которая затем возвращается через несколько моделей с иностранными и многими многими клавишами. Мой код модели можно увидеть на pastebin. Первоначальная индикация проблемы в admin заключается в том, что AreaLayouts дублируются в раскрывающемся списке select в Booth admin. Ошибка MultipleObjectsReturned (traceback) поднимается, когда я пытаюсь сохранить новую стенд. Я был в состоянии проследить это обратно на запрос SQL, который Джанго создающей, чтобы захватить список AreaLayout:

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 JOINs приводит к возврату одного результата (который является желаемым результатом), тогда как удаление только последнего соединения по-прежнему приводит к дублированию.

Я попытался выполнить этот запрос с помощью SELECT * вместо выбора конкретных полей, и два результата в этом случае: почти равно. Разница в том, что у рассматриваемого места есть несколько venuetypes, и я получаю результат для каждого из них. Есть ли способ, которым я могу сказать django, чтобы не включать эти объединения для этих запросов, или есть способ, которым я могу получить отличные результаты по сравнению с AreaLayouts?

ответ

1

Я думаю, что вас поймает ошибка, указанная в ticket 11707. В одном из замечаний упоминается, что это может вызвать исключение MultipleObjectsReturned.

Все, что я могу предложить, это прекратить использование limit_choices_to. Ваши модели довольно сложны, поэтому я не могу сразу увидеть, какая из них вызывает проблему.

+0

Спасибо Alasdair, я думаю, что вы правы. Похоже, мне нужно придумать обходной путь. – hellsgate

Смежные вопросы