Каков наилучший способ фильтрации на основе свойства внешнего ключа в нереляционной базе данных? Я понимаю, что отсутствие поддержки join
усложняет ситуацию, поэтому мне было интересно, как другие обошли это.
В моем случае у меня есть события, которые принадлежат сайтам, которые принадлежат регионам. Я хочу отфильтровать все события в данном регионе. Event
имеет свойство site
, которое является внешним ключом для Site
, который, в свою очередь, имеет внешний ключ region
для Region
:
region = Region.objects.get(id=regionID)
events = Event.objects.filter(site__region=region)
Это не работает, потому что для site__region требуется join
, а это не поддерживается в django-nonrel, работающем в Google App Engine. (Я получаю Caught DatabaseError while rendering: This query is not supported by the database.
как ошибку.) Таким образом, я перебирал события, добавляя те, которые соответствуют, в список:
events = list()
region = Region.objects.get(id=regionID)
for event in Event.object.all():
if event.site.region==region:
events.append(event)
Это хороший способ делать что-то? Есть ли что-то глупое, что я упустил из виду? Заранее спасибо!