django-non rel и свойство за подреждане на dbindexer

Работя върху тестов проект, използвайки 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?

Благодаря предварително за всяка помощ


person DanielS    schedule 12.07.2011    source източник


Отговори (2)


Имам същия проблем (в друг случай), знам причината за него, но в момента нямам решение.

Това се дължи на ограничението на базата данни на GAE, при което, ако дадена заявка съдържа сравнение на неравенства, което е ' ‹ , > , >= ' или нещо подобно, всяко подреждане на всеки член на обектите (различен от члена, който използва сравнението на неравенства ) трябва да се предшества от подреждане на члена с първо сравнение на неравенства.

Ако използваме директно базата данни на GAE, това ограничение може лесно да бъде преодоляно, като първо зададете реда от члена, който първо използва неравенството, след което сортирате с каквото искате да сортирате.

За съжаление обвивката на базата данни на django-nonrel и djangoappengine изглежда не може да направи това (опитах реда по първа техника, използвайки модел на django, все още има грешка, може би само аз), да не говорим за използването на dbindexer като обвивка на djangoappengine.db, който сам по себе си е обвивка на базата данни на GAE......

В крайна сметка, отстраняването на грешки може да бъде ад за тази бъркотия. Може да искате да използвате хранилището за данни на GAE директно само за този случай или да изчакате екипът на djangoappengine да предложи по-добра алтернатива.

person asdacap    schedule 23.11.2011

Донякъде го поправих, като промених свойството за подреждане в подкласа ModelAdmin:

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

Някой знае ли по-добър начин да поправя това?

person DanielS    schedule 13.07.2011
comment
Даниел, опитах това, но свърши работа. Имаше ли друго решение? - person sufinsha; 16.04.2013