猿问

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

我的 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)

非常感谢您的时间和帮助!


当年话下
浏览 91回答 2
2回答

阿波罗的战车

您可以在查询集上使用 Django 的聚合来实现此目的。在你做这样的事情:CountViews.pyfrom django.db.models import Countqueryset = 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 %}

慕无忌1623718

在 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家公司提供的工作岗位数量显示这些公司。
随时随地看视频慕课网APP

相关分类

Python
我要回答