Django Показать все сообщения от одного пользователя
Я создаю клон instagram на Django. У меня есть базовая функциональность, где пользователь может разместить изображение, и оно отображается на главной странице. Я хотел бы сделать "страницу пользователя", на которой будут отображаться только посты пользователя. Например, example.com/foobar будет отображать сообщения только от пользователя 'foobar'.
Я считаю, что у меня есть urls.py и шаблон, работающие правильно, но я не могу понять, как только перебирать элементы и вытаскивать те, которые принадлежат определенному пользователю. Я понимаю, что это должен быть какой-то queryset, но кроме этого я в тупике. Должен ли это быть собственный класс, или я могу расширить существующий класс PostList для извлечения постов одного автора?
post_detail.html - получает все изображения, хранящиеся в базе данных, это работает нормально.
                    {% for post in object_list %}
                        <td><a href="{% url 'detail' pk=post.pk %}"><img src="{{ post.image.url }}" width="300"></a></td>
                        {% if forloop.counter|modulo:4 %}    
                        </tr><tr>
                        {% endif %}
                    {% endfor %}
profile.html - показывает все сообщения пользователя (как в example.com/foobar)
    <table>
        <tr>
        {% for post in object_list %}
            <td><a href="{% url 'detail' pk=post.pk %}"><img src="{{ post.image.url }}" width="300"></a></td>
            {% if forloop.counter|modulo:4 %}    
            </tr><tr>
            {% endif %}
        {% endfor %}
        </tr>
    </table>
urls.py - я считаю, что это работает правильно.
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', PostList.as_view(), name='list'),
    path('<str:username>/', Profile.as_view(), name='user_profile'),
views.py
from posts.models import Post
class PostList(ListView):
    ordering = ['-created']
    paginate_by = 12
    model = Post
class Profile(ListView):
    template_name = 'posts/profile.html'
    UserName = self.kwargs.get("username")
    queryset = PostList.queryset
    
    .filter(author = UserName)
    return queryset
models.py
class Post(models.Model):
    image = models.ImageField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)
                
Вы можете отменить get_queryset():
class ProfileView(ListView):
    template_name = 'posts/profile.html'
    model = Post
    def get_queryset(self, **kwargs):
        return super().get_queryset(**kwargs).filter(
            author__username=self.kwargs['username']
        )
Примечание: В Django представления, основанные на классах (CBV), часто имеют суффикс
…View, чтобы избежать столкновения с именами моделей. Поэтому вы можете переименовать класс представления вProfileView, вместо.Profile