Фильтрация объектов, возвращаемых отношением (set.all) в Django
Я пытаюсь решить проблему фильтрации объектов, возвращаемых set.all. Я хотел бы отображать объекты, которые строго назначены для текущего вошедшего пользователя.
Ниже приведен псевдокод, иллюстрирующий ситуацию.
class Tags(models.Model)
class Comment(models.Model):
creator = models.ForeignKey(... related_name='example')
tag = models.ManyToManyField(Tags)
В представлении общей детализации "тег"
def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['author_objects'] = Comment.objects.filter(creator=self.request.user)
    return context
В шаблоне тега detail я использую set.all для возврата объектов обратного вызова. Однако это все назначенные объекты, и я хотел бы отфильтровать их.
{% for comment in tags.comment_set.all %}
     <a href="{% url 'comment-detail' comment.id %}">{{ comment.title }}</a>
{% endfor %}
Я пробовал много решений для отображения комментариев, созданных пользователем (даже с "авторскими объектами", вложенными циклами), но я получаю все назначенные объекты или ничего. Я подозреваю, что контекст не работает, но речь шла о визуализации ситуации наилучшим образом.
 Вы можете указать QuerySet с выражением Prefetch(…) [Django-doc] для получения отфильтрованного набора комментариев.
Вы делаете это, переопределяя get_queryset(…) [Django-doc] с:
from django.db.models import Prefetch
class MyView(SomeView):
    model = Tags
    
    def get_queryset(self):
        return super().get_queryset().prefetch_related(
            Prefetch(
                'comment_set',
                queryset=Comment.objects.filter(creator=self.request.user)
            )
        )
 Нет необходимости изменять get_context_data. Указав объект Prefetch, comment_set будет содержать только комментарии с self.request.user как creator.