django非rel和dbindexer排序属性
我正在使用django Nonl进行一个测试项目 启用admin接口并向数据库添加一些实体后,我向ModelAdmin类添加了一个search_字段。当我尝试搜索时,出现以下错误: 数据库错误:不支持查找类型“icontains” 为了解决这个问题,我添加了如下索引:django非rel和dbindexer排序属性,django,google-app-engine,django-nonrel,Django,Google App Engine,Django Nonrel,我正在使用django Nonl进行一个测试项目 启用admin接口并向数据库添加一些实体后,我向ModelAdmin类添加了一个search_字段。当我尝试搜索时,出现以下错误: 数据库错误:不支持查找类型“icontains” 为了解决这个问题,我添加了如下索引: from models import Empresa from dbindexer.api import register_index register_index(Empresa, {'nombre': 'icontains'
from models import Empresa
from dbindexer.api import register_index
register_index(Empresa, {'nombre': 'icontains'})
但现在我得到了以下错误:
如果为此查询指定,则第一个排序属性必须与不等式筛选器属性相同;已收到密钥,预期为idxf\u nombre\u l\u icontains
我正在尝试做django Nonl和dbindex还不支持的事情吗
提前感谢您提供的帮助我通过更改ModelAdmin子类中的ordering属性来修复了它:
class EmpresaAdmin(admin.ModelAdmin):
search_fields = ('nombre',)
#order by the atribute autogenerated by dbindex
ordering = ('idxf_nombre_l_icontains',)
有人知道更好的解决方法吗?我有同样的问题(在另一个案例中),知道原因,但目前没有解决方案
这是因为GAE的数据库限制,即如果查询包含不等式比较,即“<,>,>=”或类似的内容,则实体中任何成员(使用不等式比较的成员除外)的任何排序都必须先使用不等式比较的成员排序
如果我们直接使用GAE的数据库,这个限制可以通过首先使用不等式的成员设置顺序来轻松克服,而不是使用您想要排序的任何东西进行排序
不幸的是,django Nonl和DjangAppEngine的数据库包装器似乎无法做到这一点(我已经尝试了使用django模型的order by first技术,仍然是错误的,可能只是我),更不用说使用dbindexer作为DjangAppEngine.db的包装器了,DjangAppEngine.db本身就是GAE数据库的包装器
底线是,调试可能是这场混乱的地狱。您可能只想在这种情况下直接使用GAE数据存储,或者等待Djangappengine团队提出更好的替代方案。Daniel,我尝试过这个,但它不起作用。。你还有别的解决办法吗?