django模型无法访问父子记录

django模型无法访问父子记录,django,orm,django-models,django-queryset,Django,Orm,Django Models,Django Queryset,我有一个非常奇怪的问题,我有一个queryset,当我尝试使用[n]访问父记录信息时,它可以工作,当我循环使用它时,它不能工作。这有意义吗?下面是我的例子 >>> a=Main.objects.select_related('main', 'parent').filter(list__is_active=True, maini18n__language='en', list__listi18n__language='en') >>> a[10]._parent

我有一个非常奇怪的问题,我有一个queryset,当我尝试使用[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'
>>a=Main.objects。选择与之相关的('Main'、'parent')。筛选(list\uu is\u active=True,maini18n\uu language='en',list\uu listi18n\uu language='en'))
>>>[10]。\u parent\u cache.id
2L
>>>对于我来说,在一个:
...  打印i.\u父\u缓存id
... 
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
AttributeError:“非类型”对象没有属性“id”

这里没有什么神秘之处。并非所有对象都有父对象:项10有,但有些(包括第一个)没有。在访问相关项目之前,您可能需要检查
i.parent\u id


另外,请注意,
\u parent\u cache
是一个实现细节:您真的应该通过
i.parent

访问相关对象。很好的解释,我刚刚尝试过,效果很好:)我在这里发布了另一个关于在select语句中包含内部联接表的问题。如果你能在这方面帮助我,我将不胜感激,你似乎对django模型非常熟悉。。。