Django: الطلب عن طريق خاصية الحقل ذات الصلة المتخلفة
-
23-09-2019 - |
سؤال
لديّ نموذجان مرتبطان بعنوان واحد: أ بريد و تعليق:
class Post(models.Model):
title = models.CharField(max_length=200);
content = models.TextField();
class Comment(models.Model):
post = models.ForeignKey('Post');
body = models.TextField();
date_added = models.DateTimeField();
أرغب في الحصول على قائمة بالمنشورات ، حسب تاريخ التعليق الأخير. إذا كنت سأكتب استعلام SQL مخصص ، فسيبدو هكذا:
SELECT
`posts`.`*`,
MAX(`comments`.`date_added`) AS `date_of_lat_comment`
FROM
`posts`, `comments`
WHERE
`posts`.`id` = `comments`.`post_id`
GROUP BY
`posts`.`id`
ORDER BY `date_of_lat_comment` DESC
كيف يمكنني فعل نفس الشيء باستخدام Django orm؟
المحلول
from django.db.models import Max
Post.objects.distinct() \
.annotate(date_of_last_comment=Max('comment__date_added')) \
.order_by('-date_of_last_comment')
لا تنتمي إلى StackOverflow