Получение поста, созданного пользователем - PullRequest
0 голосов
/ 25 марта 2019

Я хочу отобразить все сообщения, созданные пользователем. Проблема в том, что я не знаю, что писать в kwargs, поскольку я использую slug для отображения URL-адресов пользователей.

модели

class Post(models.Model):
body_text=models.TextField()
title=models.CharField(max_length=50)
created_on=models.DateField(auto_now_add=True)
slug=models.SlugField(max_length=50,unique=True)
author=models.ForeignKey(
    get_user_model(),
    on_delete=models.CASCADE,
)

def __str__(self):
    return self.title

def get_absolute_url(self):
    return reverse('post_detail', kwargs={'slug': self.slug})

def save(self, *args, **kwargs):
    self.slug = slugify(self.title, allow_unicode=True)
    return super(Post, self).save(*args, **kwargs)      

views.py

class ProfilPostView(ListView):
model=Post
template_name='profile.html'

def get_queryset(self):
     return Post.objects.filter(author=self.kwargs['']).order_by('created_on')
    #return Post.objects.filter(author=self.request.user).order_by('created_on')

urls.py

 path('post/<slug:slug>/profile', ProfilPostView.as_view(), name='profile'),

1 Ответ

0 голосов
/ 25 марта 2019

Попробуйте

return Post.objects.filter(author_id=int(self.kwargs['slug'])).order_by('created_on')

Если слаг является идентификатором пользователя, то это должно работать.

Если слаг - это имя автора, тогда вы можете использовать слаг имени пользователя, предоставленный в URL-адресе conf, но вам нужно сравнить его с именами авторов в базе данных.В зависимости от модели автора вы можете использовать что-то вроде:

return Post.objects.filter(author__name=self.kwargs['slug']).order_by('created_on')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...