Как передать уникальные объекты из второй модели в функции ListView в шаблон django

Я создаю приложение для блога на django. Для этого я сделал страницу, на которой перечислены все доступные блоги. Для этого я использую представление generic.ListView. Но я также хочу создать раздел писателя, где я могу перечислить некоторые подробности о писателях, которые написали эти блоги. Для этого мне нужно получить всех пользователей, которые написали блог, а затем найти отдельных пользователей из этого списка и перечислить их имя пользователя. У меня есть поле author в модели Blog, которое отслеживает пользователя-писателя. Как я могу получить отдельные имена пользователей этих писателей и передать их в мой шаблон?

Models.py:

class Blog(models.Model):
    blog_head = models.CharField(max_length=100)
    blog_header_image = models.ImageField(upload_to="photos/blogs/", null=True, blank=True)
    #blog_content = models.TextField()
    blog_content = RichTextField(blank=True, null=True)
    #blog_summary = models.TextField(max_length=355)
    blog_summary = models.CharField(max_length=100)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    blog_date = models.DateField(auto_now_add=True)
    likes = models.ManyToManyField(User, related_name='blog_post_likes', blank=True)

    def __str__(self):
        return self.blog_head
    def get_absolute_url(self):
        return reverse('blog-full', args=[str(self.id)])
    def blog_likes_count(self):
        return self.likes.count()

Views.py:

class blogs_getting_Listview(ListView):
    model = Blog
    template_name =  'blogs.html'
    ordering = ["-blog_date"]
    def get_context_data(self, *args, **kwargs):
        context = super(blogs_getting_Listview, self).get_context_data()
        authors_id_list = Blog.objects.get(id=id).author
        authors_list = ""
        for author_in in authors_id_list:
            author_obj = User.objects.get(id=author_id)
            authors_list = authors_list + author_obj
        context.update({
            "authors_list": authors_list
            #'more_context': Model.objects.all(),
        })
        print(type(context["authors_list"]))
        return context

urls.py:

urlpatterns = [
    #path('', views.blogs_getting, name='blogs/'),
    path('', blogs_getting_Listview.as_view(), name='blogs/'),
    path('blog/<int:pk>', blogs_getting_Detailview.as_view(), name='blog-full'),
    path('new_blog/', add_blog_view.as_view(), name='add_blog'),
    path('update_blog/<int:pk>', edit_blog_view.as_view(), name='update_blog' ),
    path('delete_blog/<int:pk>', delete_blog_view.as_view(), name='delete_blog' ),
    path('like/<int:pk>', like_view, name='like_blog' ),
]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

template:

{% for author in authors_list %}
            <p>{{ author }}</p>
            {% endfor %}

(Здесь я пытаюсь отобразить кверисет объектов автора на моей странице)

Благодарен за любую помощь

Попробуйте обратиться непосредственно к автору:

class blogs_getting_Listview(ListView):
model = Blog
template_name =  'blogs.html'
ordering = ["-blog_date"]
def get_context_data(self, *args, **kwargs):
    context = super(blogs_getting_Listview, self).get_context_data()

    authors = Blog.objects.get(id=id)

    authors_list = ""
    for author in authors:
        author_obj = User.objects.get(id=author.id)

        authors_list.append(author_obj)

    context["authors_list"] = authors_list
    
    return context
Вернуться на верх