django-non rel и dbindexer упорядочивающие свойства - PullRequest
3 голосов
/ 13 июля 2011

Я работаю над тестовым проектом с использованием django-nonrel.

После включения интерфейса администратора и добавления некоторых объектов в базу данных я добавил поле search_field в класс ModelAdmin. При попытке поиска я получил следующую ошибку:

DatabaseError: Тип поиска 'icontains' не поддерживается

Чтобы это исправить, я добавил такой индекс:

from models import Empresa
from dbindexer.api import register_index

register_index(Empresa, {'nombre': 'icontains'})

Но теперь я получаю следующую ошибку:

Первое свойство упорядочения должно совпадать со свойством фильтра неравенства, если оно указано для этого запроса; полученный ключ , ожидаемый idxf_nombre_l_icontains

Я пытаюсь сделать что-то, что еще не поддерживается django-nonrel и dbindex?

Заранее спасибо за любую помощь

Ответы [ 2 ]

3 голосов
/ 23 ноября 2011

У меня та же проблема (в другом случае), знаю причину ее возникновения, но в настоящее время нет решения.

Это связано с ограничением базы данных GAE, в котором, если запрос содержит сравнение неравенства, тоis '<,>,> =' или что-то в этом роде, любому порядку любого члена сущностей (кроме члена, использующего сравнение неравенства) должен предшествовать порядок элемента с сравнением неравенства первым.

Если мы напрямую используем базу данных GAE, это ограничение можно легко преодолеть, сначала установив порядок для члена, который сначала использует неравенство, а затем сортирует по тому, что вы хотите отсортировать.

К сожалению, оболочка базы данных django-nonrel и djangoappengine, похоже, не может этого сделать (я пробовал упорядочить по первому методу с использованием модели django, все еще ошибка, возможно, это только я), не говоря уже оиспользование dbindexer в качестве оболочки djangoappengine.db, которая сама по себе является оболочкой базы данных GAE ......

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

1 голос
/ 13 июля 2011

Я исправил это, изменив свойство упорядочения в подклассе ModelAdmin:

class EmpresaAdmin(admin.ModelAdmin):
    search_fields = ('nombre',)
    #order by the atribute autogenerated by dbindex
    ordering = ('idxf_nombre_l_icontains',)

Кто-нибудь знает лучший способ исправить это?

...