Как отфильтровать последний элемент дочерней коллекции? - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь запросить все сообщения, для которых был создан последний комментарий сегодня ||еще не было комментариев. Как я могу сделать такой фильтр запросов в Django?

Вот мои модели

class Post(models.Model):
    title = models.CharField(max_length=255)
    content = models.TextField()


class Comment(models.Model):
    content = models.TextField()
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name="comments")
    created_at = models.DateTimeField(auto_now_add=True)

1 Ответ

3 голосов
/ 04 октября 2019

Вы можете использовать Q для фильтрации Post объектов с комментариями, которые были добавлены сегодня или у которых нет комментариев.

from datetime import date
from django.db.models import Q

Post.objects.filter(Q(comments__created_at__gte=date.today()) | Q(comments__isnull=True))
...