2011-06-22 36 views
25

Tôi có hai mô hình như vậy màQuery cho các yếu tố x đầu trong Django

class JobTitle(models.Model): 
    name = models.CharField(max_length=1000) 

class Employer(models.Model): 
    jobtitle = models.ForeignKey(JobTitle,unique=False,null=True) 

Như bạn thấy, một sử dụng lao động có thể có nhiều jobtitles. Tôi cố gắng tạo một truy vấn để có được 5 nhà tuyển dụng hàng đầu có số lượng chức danh công việc tối đa là

Làm cách nào để đạt được điều này là Django?

Cảm ơn

+1

Với mô hình này, làm thế nào để sử dụng lao động có thể có nhiều chức danh công việc? và đâu là phần còn lại của các lĩnh vực cho chủ nhân? nó chỉ là một khóa ngoại? –

+0

@ SeanEd-Man Tôi đoán anh ta có nghĩa là nhiều 'Chủ nhân' có thể có cùng' JobTitle'. – h4k1m

Trả lời

32
Employer.objects.values('id').annotate(jobtitle_count=Count('jobtitle')).order_by('-jobtitle_count')[:5] 
+1

DOCS -> https://docs.djangoproject.com/en/1.11/topics/db/aggregation/ –

+1

thậm chí tốt hơn: https://docs.djangoproject.com/en/dev/topics/db/aggregation/ – Anupam

3
from django.db.models import Count 

Employer.objects.annotate(Count('jobtitle')).order_by('-jobtitle__count')[:5] 
+0

Bạn chỉ đếm các hàng trong bảng 'Employer'. Bạn cần nhóm. – DrTyrsa

Các vấn đề liên quan