2011-05-05 37 views
0

我有一個非常奇怪的問題,我有一個查詢集與自身連接,當我試圖訪問父記錄信息使用[n]它的工作原理,當我通過它循環doesn'噸。那有意義嗎?下面是我的例子django模型不能訪問父子記錄

>>> 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

這裏沒有神祕。並非所有對象都有父項:項目10有,但有些(包括第一項)則不。訪問相關項目之前,您可能需要檢查i.parent_id

此外,請注意,_parent_cache是一個實現細節:您應該真的通過i.parent訪問相關對象。

+0

優秀的解釋,我只是試了一下,並完美地工作:) – 2011-05-05 18:03:23

+0

非常感謝你 – 2011-05-05 18:03:30

+0

我在這裏發佈了另一個問題http://stackoverflow.com/q/5889751/145277關於在select語句中包含內部連接表。如果你能幫我解決這個問題,我會很感激,你似乎很瞭解django-models的方式。 – 2011-05-05 18:06:46