Найти - Пользователи
Полная версия: Выборка по inequality полям
Начало » Google App Engine » Выборка по inequality полям
1
zheromo
Есть примитивная модель

class MyModel(Model):
rating = IntegerProperty()
timestamp = IntegerProperty()
необходимо сделать такую выборку

MyModel.all().filter('timestamp <', 100).order('-rating')
понятно что вылетает ошибка типа First ordering property must be the same as inequality filter property, if specified for this query; received rating, expected timestamp

Может кто знает как все таки получить нужный результат? Может есть какой-нибудь трюк…
zheromo
Может кому нибудь пригодится.
Так как у меня была очеь протая задаса просто сортировать записи по популярности и рейтингу сделал так:

class TopPager(Pager):
'''Paginator for TOP of content
'''

def __init__(self, query, days, **kw):
super(TopPager, self).__init__(query, **kw)
self.days = days

@property
def results(self):
is_dirty = True
while is_dirty:
is_dirty = False
page = super(TopPager, self).results
for item in page:
if not (datetime.utcnow() - item.date).days < self.days:
item.put()
is_dirty = True
return page
Соответственно в модели:
    @db.ComputedProperty
def top_24h(self):
return _since_days(self.date, 1)

@db.ComputedProperty
def top_7d(self):
return _since_days(self.date, 7)

@db.ComputedProperty
def top_30d(self):
return _since_days(self.date, 30)
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