python - 如何过滤掉对象并仅显示用户在与对象 Django 关联的 ManyToMany 字段中的位置
问题描述
所以我有这个系统,我的Post
对象有一个 ManyToMany 字段,它被称为 Saves。因此,例如在 Reddit 上,您可以保存帖子。所以我让它工作了,用户可以保存帖子,并将它们添加到 ManyToMany 字段。但是,我想过滤掉这些帖子,只显示该用户在 ManyToMany 字段中的帖子。
这是我的models.py
class Post(models.Model):
author = models.ForeignKey(User,related_name='posts',on_delete=models.CASCADE)
saves = models.ManyToManyField(User,blank=True,related_name='post_saves')
我将saves
字段连接到User
Django 提供的模型。
这是我的views.py
class PostSaveRedirect(RedirectView):
def get_redirect_url(self,*args,**kwargs):
pk = self.kwargs.get("pk")
slug = self.kwargs.get("slug")
obj = get_object_or_404(Post,pk=pk,slug=slug)
url_ = obj.get_absolute_url()
user = self.request.user
if user.is_authenticated:
if user in obj.saves.all():
obj.saves.remove(user)
else:
obj.saves.add(user)
return url_
所以这一切都很好,它将用户添加到 ManyToMany 字段,但现在我想知道如何过滤掉帖子并只显示用户在 ManyToMany 字段中的帖子。
这是我保存的帖子视图。
class PostSaveListView(ListView):
model = Post
template_name = 'mainapp/post_saved.html'
paginate_by = 10
queryset = models.Post.objects.all()
def get(self,request):
posts = Post.objects.all()
return render(request, self.template_name)
def get_queryset(self):
return Post.objects.filter().order_by('-published_date')
那么Post.objects.all()
,我该如何更改它,以便它可以过滤到我的需求?这是我拥有的用户帖子列表视图的类似查询集
我一直在谷歌搜索并阅读文档和其他文章,但没有找到任何能够向我展示如何过滤 ManyToMany 字段的内容。任何帮助将非常感激
解决方案
你试过这个吗?如果我正确理解您的问题,这应该可以解决。
推荐阅读
- php - 尝试更新记录但在 php 中失败
- postgresql - 配置使用 Postgresql 数据库的 Spring Boot 后端副本集
- python - 调整笔记本选项卡内的子控件大小 - Tkinter Python
- scala - 使用scala在spark中创建对RDD
- python - 对多索引数据帧的操作
- html - 从html到组件的角度条件?
- laravel - 清除 Laravel5.7 缓存的问题(memcached 驱动)
- python - 使用 pytest 测试所有 Flask 路由是否都已测试
- python - 稀疏数据差异的有效直方图
- python - python - setsockopt IP_TOS 被忽略