Объект повторяется в контексте DetailView - PullRequest
0 голосов
/ 17 июня 2020

У меня есть следующее представление, в котором я добавляю дополнительный контекст для отправки аналогичного сообщения в шаблон.

class PostDateDetailView(DateDetailView):
    queryset = Post.published.all()
    date_field = "publish"
    month_format='%m'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        obj = self.get_object()
        post_tags_pks = obj.tags.all().values_list('pk', flat=True)
        similar_posts = self.queryset.filter(tags__in=post_tags_pks).exclude(pk=obj.pk)
        similar_posts = similar_posts.annotate(same_tags=Count('tags')).order_by('-same_tags','-publish')[:3]
        context["similar_posts"] = similar_posts
        print(context)
        return context

Представление работает правильно, но когда я распечатываю контекст, я получаю 'объект' и 'сообщение '(это один и тот же объект)

{'object', 'post', 'view', 'similar_posts'}

Когда я смотрю на функцию get_context_data из SingleObjectMixin, кажется, что результат всегда будет дублироваться: я имею в виду, что всегда будет self.object [' object '] , и context_object_name ['post'].

def get_context_data(self, **kwargs):
            context = {}
            if self.object:
                context['object'] = self.object
                context_object_name = self.get_context_object_name(self.object)
                if context_object_name:
                    context[context_object_name] = self.object
            context.update(kwargs)
            return super().get_context_data(**context)

Я хотел бы знать, есть ли для этого причина или я что-то упускаю. Заранее спасибо.

...