[英]Display name along with the count in descending order in 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)
非常感谢您的时间和帮助!
您可以在查询集上使用 Django 的Count
聚合来完成此操作。 在你的Views.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 %}
在 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})
在 index.html 文件中:
{% for company in comp_details %}
{{ company.name }}
{% endfor %}
这将根据前 10 家公司提供的工作数量显示它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.