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