Так что это все еще не решило мою проблему .. Позвольте мне попытаться объяснить немного больше.
Допустим, что sql:
SELECT c.*, ci.*
FROM category c
JOIN category_info ci ON (c.node_id = ci.node_id)
WHERE c.type_id = 15 AND c.parent_id = 50
Вернет две строки. Оба идентичных, кроме поля type_id из таблицы category_info, где есть два типа - 1 и 2. Если я добавлю в sql - ci.type_id = 1, я получу правильный результат. Но из того, что я пробовал, даже с нотацией doubleunderscore он по-прежнему возвращает 2 строки в Django.
Теперь у меня есть:
Category.objects.filter(type_id = 15, parent_id = offset, status = 1, node__type_id = 1)
Где node__type_id = 1 представляет "ci.type_id = 1". Но он все еще возвращает два ряда. Когда я удалю «to_field» из определения модели, он пройдет, но вернет неправильные данные, потому что по умолчанию он связывает их с первичным ключом. Затем я попытался отфильтровать данные, связав другой фильтр, но все равно не смог его обойти.
Вот немного отладки, может быть, это поможет:
Caught an exception while rendering: get() returned more than one Category_info -- it returned 2! Lookup parameters were {'node_id__exact': 5379L}
Похоже, он пытается искать только идентификатор_узла, а не тип_идентификатора.
Вздох, я мог бы плакать ...