django模型无法访问父子记录

时间:2011-05-05 17:34:54

标签: django orm django-models django-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'

1 个答案:

答案 0 :(得分:1)

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

另请注意,_parent_cache是一个实现细节:您应该通过i.parent访问相关对象。