python - 尽管在 views.py 中设置了 get_queryset 函数,但我的对象没有被过滤
问题描述
我想制作一个 api 来从已发布的博客文章列表中获取博客的详细视图。为了解决这个问题,我使用 get_queryset() 过滤器来解决这个问题,但它只是返回所有列表,即没有过滤器起作用。
我使用了如下所示的代码:
模型.py
class BlogModel (models.Model) :
heading = models.CharField(max_length=254)
blog = models.TextField()
author = models.CharField(max_length=254)
视图.py
class BlogRetrieveView(generics.RetrieveUpdateDeleteAPIView):
serializer_class=BlogListSerializer
queryset=BlogModel.objects.all()
lookup_field='blog_id'
def get_queryset(self,*args, **kwargs):
return BlogModel.objects.filter(
blog__id=self.kwargs['blog_id']
序列化程序.py
class BlogListSerializer(serializers.ModelSerializer):
class Meta:
model = BlogModel
fields = '__all__'
网址.py
url(r'^blog/(?P<blog_id>\d+)/$',BlogRetrieveView.as_view()),
我得到以下输出:
这显示了列表中显示的 7 篇博文中的 1 篇。 显然,没有应用过滤器。
编辑 1:根据给定的建议,我在 localhost 上的代码可以正常工作,但生产网站仍然停留在上述问题中提到的情况。背后的原因是什么?
解决方案
我认为你应该删除lookup_field
和get_queryset()
BlogRetrieveView 并将网址更改为url(r'^blog/(?P<pk>\d+)/$',BlogRetrieveView.as_view())
推荐阅读
- ruby-on-rails - 在任何来源中都找不到 uniform_notifier-1.13.0
- html - 位置固定时图像大小发生变化
- css - 当前在 Webpack 中处理 CSS 条目文件的最佳方法是什么?
- sql-server - 为“使用 [数据库]”使用动态值
- javascript - 如何让 window.crypto.subtle 输出与“crypto”js 库相同的签名?
- python - Selenium TypeError:“WebElement”对象不可调用
- javascript - 如何制作一个居中但响应式的 html 导航栏
- java - 用鼠标在图像上绘画和擦除
- c# - 问 - 如何添加多个列表
列出 具有特定名称 - shell - "$*" 的赋值