Django: الطلب عن طريق خاصية الحقل ذات الصلة المتخلفة

StackOverflow https://stackoverflow.com/questions/2543788

  •  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')
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top