在非关系数据库中基于外键属性进行过滤的最佳实践是什么?我知道缺乏join
支持会使事情变得更加复杂,所以我想知道其他人是如何绕过它的。
就我而言,我有属于站点的事件,属于区域。我想过滤给定区域中的所有事件。AnEvent
的site
属性是 a 的外键,而 aSite
又具有 a 的region
外键Region
:
region = Region.objects.get(id=regionID)
events = Event.objects.filter(site__region=region)
这不起作用,因为 site__region 需要 ajoin
并且在 Google App Engine 上运行的 django-nonrel 上不受支持。(我得到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)
这是做事的好方法吗?我忽略了一些愚蠢的事情吗?提前致谢!