Django将新项目添加到dict

Django将新项目添加到dict,django,Django,你怎么知道的 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).cou

你怎么知道的

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
^


我想手动将新项目添加到列表中。

您的问题写得不好,但我相信您正在寻找的是
注释
():

返回的值不是dict列表,而是
queryset
,它是一个对象的iterable。然后,您可以作为属性访问
post\u count

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'
你的方式很好。 但有一个冲突:

thread_list[0].post_count
您的类具有名称线程,而您的循环具有类似于类的名称。 对于线程列表中的线程

就这么做吧:

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

或者类似的事情。只需更改循环-我在单词末尾添加“s”

您的问题不清楚。如果您想为queryset中的each
thread
对象设置一个新变量,那么您的方法是正确的。如果要将新对象添加到现有查询集
线程列表
,则不可能。
thread_list[0].post_count
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
for threads in thread_list:
                    count = post.objects.select_related().filter(post_thread_id = threads.id).count()   
                    threads.post = count