2013-10-28 59 views
-2
thread_list = thread.objects.select_related().filter(thread_forum_id = current_obj.id).order_by('-thread_date') 
      for thread in thread_list: 
       count = post.objects.select_related().filter(post_thread_id = thread.id).count() 
       thread.post = count 

這是怎麼回事?Django添加新的條目到字典

thread.post = count 

^

class thread(models.Model): 
    mess = models.CharField(max_length=5000) 
    objects = thread_manager() 

我希望有新的項目添加到列表中manualy。

+0

你的問題不清楚。如果你想爲你的查詢集中的每個「線程」對象設置一個新變量,那麼你的方法是正確的。如果你想添加一個新的對象到你現有的查詢集'thread_list',那麼這是不可能的。 – FallenAngel

回答

0

你的問題是不是寫得很好,但我相信你正在尋找的是annotationdocs here):

from django.db.models import Count 
thread_list = thread.objects.select_related().filter(thread_forum_id=current_obj.id) \ 
    .order_by('-thread_date').annotate(post_count=Count('post_thread_set')) 
# I'm just guessing this name: 'post_thread_set' 

返回的值是不是類型的字典列表,而這是一個queryset,其中是一個可迭代的對象。然後您可以訪問post_count作爲屬性:

thread_list[0].post_count 
0

您的方式很好。 但有衝突:

thread_list = thread.objects.select_related().filter(thread_forum_id = current_obj.id).order_by('-thread_date') 
      for thread in thread_list: 
       count = post.objects.select_related().filter(post_thread_id = thread.id).count() 
       thread.post = count 

你的類有名字線程和你的循環有這樣的類名。 爲線程在thread_list:

只是做到這一點:

for threads in thread_list: 
        count = post.objects.select_related().filter(post_thread_id = threads.id).count() 
        threads.post = count 

或類似這樣的東西。只是改變循環 - 我在一個字的末尾添加's'