为了账号安全,请及时绑定邮箱和手机立即绑定

在 Django 中按降序显示名称以及计数

在 Django 中按降序显示名称以及计数

当年话下 2022-08-25 14:41:00
我的 models.py 文件中有两个模型,如下所述:class Company(models.Model):  company_name = models.CharField(max_length=100)  def __str__(self):    return f"{self.company_name}"Class Jobs(models.Model):  job_title = models.CharField(max_length=100)  job_company = models.ForeignKey(Company, models.on_delete=CASCADE)  job_location = models.CharField(max_length=50)  job_salary = models.CharField(max_length=20)  def __str__(self):    return f"{self.job_title}"这些表中的数据如下所示:  COMPANY--------------------|   COMPANY_NAME   |--------------------|   Google         ||   Facebook       ||   Microsoft      ||   Amazon         |--------------------  JOBS-------------------------------------------------------------------|   JOB_TITLE   |  JOB_COMPANY  |   JOB_LOCATION   |  JOB_SALARY  |-------------------------------------------------------------------| ENGINEER      | GOOGLE        | SAN JOSE         |  5000        || MANAGER       | AMAZON        | NYC              |  8000        || DELIVERY MAN  | AMAZON        | WASHINGTON DC    |  2000        || ACCOUNTANT    | MICROSOFT     | SFO              |  4000        || SALES LEAD    | GOOGLE        | SFO              |  5000        || DESIGNER      | GOOGLE        | NYC              |  3500        || CHEF          | GOOGLE        | NYC              |  2500        |-------------------------------------------------------------------我想在我的模板上显示以下输出:公司名称以及公司提供的工作岗位数量按降序排列,如下所示。GOOGLE (4)AMAZON (2)MICROSOFT (1)非常感谢您的时间和帮助!
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

您可以在查询集上使用 Django 的聚合来实现此目的。在你做这样的事情:CountViews.py


from django.db.models import Count


queryset = MyModel.objects.all().annotate(count = Count('Google'))

dict1= {}

for each in queryset:

   #print(each.my_charfield, each.count)

   context[each.my_charfield] = each.count 


return render(request, 'some.html', context=dict1)

在模板中访问它像


{% for key, value in dict1.items %}

     {{key}} ({{value}}) 

{% endfor %}


查看完整回答
反对 回复 2022-08-25
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

在 views.py 文件中:


def company(request):

    comp_details = Company.objects.annotate(jobs=Count('job')).order_by('-jobs')[:10]

    return render(request, 'index.html', {'comp_details': comp_details})

在索引.html文件中:


{% for company in comp_details %}

   {{ company.name }}

{% endfor %}

这将根据前10家公司提供的工作岗位数量显示这些公司。


查看完整回答
反对 回复 2022-08-25
  • 2 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号