python - 获取用户创建的帖子
问题描述
我想显示从用户创建的所有帖子。问题是我不知道在 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)
视图.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')
网址.py
path('post/<slug:slug>/profile', ProfilPostView.as_view(), name='profile'),
解决方案
尝试
return Post.objects.filter(author_id=int(self.kwargs['slug'])).order_by('created_on')
如果 slug 是用户 ID,那么应该可以。
如果 slug 是作者的姓名,那么您可以使用 url conf 提供的用户名 slug,但您需要将其与数据库中的作者姓名进行比较。根据 Author 模型,您可以使用以下内容:
return Post.objects.filter(author__name=self.kwargs['slug']).order_by('created_on')
推荐阅读
- typescript - 'DocumentData | 类型的参数 undefined' 不可分配给“DocumentData”类型的参数
- http - 用特殊字符编码文件名以上传到 jmeter 中的 post Http 请求
- javascript - 有没有办法“使用”给定的输入值?
- postgresql - PostgreSQL如何将时区偏移的日期转换为UTC?
- python - 如何修复“AttributeError:'Settings' 对象没有属性 'ROOT_URLCONF'”
- python - 如何将JPG转换为适合Python?
- javascript - 我希望 setinterval 仅自动刷新脚本 PHP Javascript Ajax 的一部分
- freemarker - 使用 FreeMarker 包含模板时保持缩进
- angular - 缺少元素时如何防止地图失败
- java - 检索arraylist JAVA的获胜者