Как использовать несколько моделей в одном классе ListView на Django

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

Я создал класс UserPostListView, затем я хочу искать в модели Profile по имени автора и получать профиль.

Как я могу это сделать?

Весь код здесь

models.py

class Profile(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)
    image = models.ImageField(default='default.jpg',upload_to='profile_pics')

    def __str__(self):
        return f'{self.user.username} Profile'

    def save(self):
        super().save()

        img = Image.open(self.image.path)

        output_size = (300,300)
        img.thumbnail(output_size)
        img.save(self.image.path)

views.py(Класс UserPostListView)

class UserPostListView(ListView):
    model = Post
    template_name = 'blog/user_posts.html'
    context_object_name = 'posts'
    paginate_by = 5

    def get_queryset(self):
        user = get_object_or_404(User, username=self.kwargs.get('username'))
        return Post.objects.filter(author=user).order_by('-date_posted')

    def get_context_data(self, **kwargs):
        context = super(UserPostListView, self).get_context_data(**kwargs)
        context['profiles'] = Profile.objects.all()
        return context

Если я понимаю, вам нужен профиль автора постов, которые находятся в вашем посте queryset, который является одним пользователем, поэтому в вашем get_context_data вы можете получить автора для каждого поста.

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["profile"] = Profile.objects.filter(user__username=self.kwargs.get("username"))
        return context
Вернуться на верх