我有一个非常奇怪的问题,我有一个与自身连接的查询集,当我尝试使用[n]访问父记录信息时,它可以工作,当我循环通过它时不会。那有意义吗?下面是我的例子
>>> a=Main.objects.select_related('main', 'parent').filter(list__is_active=True, maini18n__language='en', list__listi18n__language='en')
>>> a[10]._parent_cache.id
2L
>>> for i in a:
... print i._parent_cache.id
...
Traceback (most recent call last):
File "<console>", line 2, in <module>
AttributeError: 'NoneType' object has no attribute 'id'
答案 0 :(得分:1)
这里没有神秘感。并非所有对象都有父对象:第10项有,但有些(包括第一个)没有。您可能需要在访问相关项目之前检查i.parent_id
。
另请注意,_parent_cache
是一个实现细节:您应该通过i.parent
访问相关对象。