亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何計算不同查詢集中的匹配項

如何計算不同查詢集中的匹配項

回首憶惘然 2022-08-02 10:37:23
在對所有模型進行搜索后,我想在我的模板中計算不同的查詢集,但似乎不同的查詢集位于列表列表中。我的視圖功能:class Search(ListView):template_name='artdb/searchResult.html'def get_queryset(self): # override get_queryset() has to have that name...    q=self.request.GET.get('seastr')    models=[Person,Activity,Member,Comment]    fields=[l._meta.fields for l in models]    res=[]    for i,j in enumerate(models):        sq=[Q(**{x.name + "__icontains" : q}) for x in fields[i] if not isinstance(x,ForeignKey)]        res+=[j.objects.filter(k) or None for k in sq]    res=[k for k in res if k]    if q:        return res    else:        return Person.objects.none()  # SELECT ... WHERE headline ILIKE '%Lennon%';def get_context_data(self,*args,**kwargs):    #q=self.request.GET.get('seastr')    context=super().get_context_data(*args,**kwargs)         context['member']=Member.objects.all()    return context上下文字典:{'page_obj': None, 'view': <artdb.views.Search object at 0x7f415ec88080>, 'is_paginated': False, 'object_list': [<QuerySet [<Person: David Bolander>, <Person: adam something>]>, <QuerySet [<Comment: david bolander comment>]>], 'member': <QuerySet [<Member: 2019-11-21>, <Member: 2020-02-10>]>, 'paginator': None}我的模板:{% extends "artdb/index.html" %}{% block sr1 %}    <ul>      <a class="btn btn-light btn-outline-success my-2 my-sm-0" role="button" href="{% url 'artdb:search' %}">        Persons: {{object_list.count}}      </a>      <a class="btn btn-light btn-outline-success my-2 my-sm-0" role="button" href="{% url 'artdb:search' %}">    Activities: {{activity.count}}      </a>      <a class="btn btn-light btn-outline-success my-2 my-sm-0" role="button" href="{% url 'artdb:search' %}">    Members: {{member.count}}      </a>      <a class="btn btn-light btn-outline-success my-2 my-sm-0" role="button" href="{% url 'artdb:search' %}">    Comments: {{comment.count}}      </a>      <br></br></ul>{% endblock sr1 %從模板中可以看出,我想對標記中的匹配項進行計數,但查詢集在上下文字典中堆疊為列表列表。例如,可以對成員進行計數,因為它是稍后添加的,并且不在列表列表中。我該如何解決這個問題?<a>
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

好吧,我找到了解決這個問題的方法。我在上下文字典中再次插入object_list:


def get_context_data(self,*args,**kwargs):


        context=super().get_context_data(*args,**kwargs)


        c=context['object_list']

        cname=[l.model.__name__ for l in c]


        for l in zip(cname,c):

            context[l[0].lower()]=l[1]


        return context

這不是最優雅的解決方案,如果其他人有其他解決方案,請分享。


查看完整回答
反對 回復 2022-08-02
  • 1 回答
  • 0 關注
  • 83 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號