[Fixed]-Excluding objects from Django queryset based on recency

1👍

For performance and simplicity you could cache both the number of replies and the latest reply:

class Link(models.Model):
    ...
    number_of_replies = models.PositiveIntegerField(default=0)
    latest_reply = models.ForeignKey('myapp.Publicreply', related_name='+', blank=True, null=True, on_delete=models.SET_NULL)

When a reply is entered, update the corresponding link.number_of_replies and link.latest_reply.

The query would then be:

Link.objects.filter(number_of_replies__gte=1)\
            .exclude(latest_reply__user=request.user)

Leave a comment