【发布时间】:2019-03-25 16:00:46
【问题描述】:
我想显示从用户创建的所有帖子。问题是我不知道在 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'),
【问题讨论】:
-
你不能把用户 ID 传给你的
filter()吗? -
您不需要为 kwargs 指定任何内容,只需使用
return Post.objects.filter(author_id=user_id).order_by('created_on') -
如何获取 user_id?我不想要当前登录的用户,而是所有创建帖子的用户
-
你可以像这样获取你的用户ID,self.request.user.pk。它返回用户ID
-
@DimitrisKougioumtzis 正如我上面所说,我想要的不是登录用户,而是创建帖子的每个用户 ID