Với hai mô hình:Django Aggregation Across Xếp Mối quan hệ
class Profile(models.Model):
user = models.ForeignKey(User, unique=True, verbose_name=_('user'))
about = models.TextField(_('about'), blank=True)
zip = models.CharField(max_length=10, verbose_name='zip code', blank=True)
website = models.URLField(_('website'), blank=True, verify_exists=False)
class ProfileView(models.Model):
profile = models.ForeignKey(Profile)
viewer = models.ForeignKey(User, blank=True, null=True)
created = models.DateTimeField(auto_now_add=True)
Tôi muốn để có được tất cả các cấu sắp xếp theo tổng số lượt xem. Tôi có thể có được một danh sách các id hồ sơ được sắp xếp theo tổng số lượt xem với:
ProfileView.objects.values('profile').annotate(Count('profile')).order_by('-profile__count')
Nhưng đó chỉ là một cuốn từ điển của id hồ sơ, có nghĩa là sau đó tôi phải vòng qua nó và đặt cùng một danh sách các đối tượng profile. Đó là một số truy vấn bổ sung và vẫn không dẫn đến QuerySet. Tại thời điểm đó, tôi cũng có thể thả xuống SQL thô. Trước khi tôi làm, có cách nào để làm điều này từ mô hình hồ sơ? ProfileViews có liên quan thông qua một lĩnh vực ForeignKey, nhưng nó không phải là mặc dù mô hình hồ sơ biết rằng, vì vậy tôi không chắc chắn làm thế nào để buộc hai lại với nhau. Ngoài ra, tôi nhận ra rằng tôi có thể lưu trữ các khung nhìn như là một tài sản trên mô hình Profile và có thể trở thành những gì tôi làm ở đây, nhưng tôi vẫn quan tâm đến việc học cách sử dụng các hàm Aggregation tốt hơn.
'từ django.db.models Import Count' – juanjo