Найти - Пользователи
Полная версия: filter __contains валит запрос
Начало » Django » filter __contains валит запрос
1 2 3
Nick2009
Такой код
    
context_name = _(u"муму")
kwargs={}
...
kwargs['onetoone__fk2__name__icontains']=context_name
...
print '..'
q = Table.objects.select_related('onetoone__fk2__name').filter(**kwargs)
print '....'
Если словарь пустой, то запрос проходит и во вьюхе отображается q.onetoone.fk2.name
Если в словарь попадают численные параметры для запроса, то запрос тоже выполняется правильно все поля отображаются правильно.
Если в словарь добавляется только вышеприведенная конструкция( kwargs=context_name), то запрос сваливается на строке q = Table.objects.select_related('onetoone__fk2__name').filter(**kwargs)
, без сообщений об ошибках.
Всё в utf-8, но если вместо муму поставить латинский символ или цифру без _(u'') то тоже не работает
функция _(u'') это ugettext.

В чем может быть проблема?
Александр Кошелев
Nick2009
то запрос сваливается на строке q = Table.objects.select_related('onetoone__fk2__name').filter(**kwargs)
, без сообщений об ошибках.
Что значит “сваливается”?
Nick2009
select_related('onetoone__fk2__name')
Вы понимаете что этот вызов не имеет смысла?
Nick2009
Daevaorn
Nick2009
то запрос сваливается на строке q = Table.objects.select_related('onetoone__fk2__name').filter(**kwargs)
, без сообщений об ошибках.
Что значит “сваливается”?
Nick2009
select_related('onetoone__fk2__name')
Вы понимаете что этот вызов не имеет смысла?
Сваливается, значит выполнение вьюхи прекращается в этой строке

Почему не имеет? Этот вызов без вышеприведенного аргумента работает и возвращает выборку с name из таблицы перевода для объекта на который ссылается внешний ключ, который в свою очередь находися в связаной таблице по ключу один к одному с таблицей, к которой делается запрос.
Мне нужно теперь получить выборку отфильтрованную по заданному контексту к name.

Что в этом вызове не имеет смысла?

Вас наверное смущают onetoone и fk2 , так это для понятности :)

Конкретно, нужно получить примерно такой SQL
SELECT * FROM item_process AS p
LEFT JOIN item AS i ON i.id = p.id
LEFT JOIN obj AS o ON o.id = i.obj_id
LEFT JOIN obj_taranslation AS o_trans ON o_trans.master = o.id
WHERE o_trans.name_ru LIKE '%некоторый контекст%'
Александр Кошелев
Nick2009
Сваливается, значит выполнение вьюхи прекращается в этой строке
Тогда покажите трейсбек ошибки.
Nick2009
Почему не имеет?
select_related предназначен для “присоединения” связных объектов целиком. Из-за этого имеет смысл указыва только related поля – т.е. ForeignKey/OneToOneField. Поля другого типа указывать бессмысленно.

Ну и конечно, если вам не нужны связные объекты в результате, то вообще select_related надо опустить. В вашем случае это скорей всего так.
Nick2009
Daevaorn
Nick2009
Сваливается, значит выполнение вьюхи прекращается в этой строке
Тогда покажите трейсбек ошибки.
Nick2009
Почему не имеет?
select_related предназначен для “присоединения” связных объектов целиком. Из-за этого имеет смысл указыва только related поля – т.е. ForeignKey/OneToOneField. Поля другого типа указывать бессмысленно.

Ну и конечно, если вам не нужны связные объекты в результате, то вообще select_related надо опустить. В вашем случае это скорей всего так.
Согласен, исправил, но это никак на результат не влияет.

Я там желаемый SQL привел.
Ошибка в другом.
Александр Кошелев
Nick2009
Ошибка в другом.
Ну так трейсбек вы приведете? Тут телепатов нет.
Nick2009
А как его получить? в консоли ошибок нет, в браузере нет.
Александр Кошелев
Nick2009
в консоли ошибок нет, в браузере нет.
А что есть в браузере и в консоле? Если происходит ошибка, то должен быть трейсбек.
Nick2009
В браузере сайт работает. При попытке получить выборку Ajax запросом, сайт ничего не делает, т.к. не получает реквеста.
В консоли идет трэйсбек обращений к серверу и мои принты.
Доходит нормально до этой строки и сваливается из данной вьюхи без комментариев.
Дальше идут опять POST/GET трэйсбеки, т.к. я мышкой двигаю а сайт на это реагирует.
Вообще, есть такая беда, при работе с Ajax запросами в браузер не выдаются ошибки, хотя они очевидно возникают.

Сейчас попробовал Django_debug_toolbar поставить. С первого раза не завелся, нужно его допиливать т.к. он кажется jQuery не видит, а времени сейчас нет.

Может можно получить скрытый стрейсбек из командной строки?
Ferroman
Воспользуйтесь pdb или logging.exception.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB