python - 基于 DRF 类的视图 api 数据过滤问题
问题描述
我正在尝试将更新和销毁视图添加到此视图。但问题是我知道如何使用基于函数的视图来做到这一点,并且我在这里使用的是基于类的。
views.py
class UpdatePostView(generics.RetrieveUpdateDestroyAPIView):
permission_classes = [permissions.IsAuthenticated]
serializer_class = PostSerializer
queryset = Post.objects.all()
lookup_field = 'id'
serializers.py
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = '__all__'
问题 1:任何用户都可以删除或更新其他用户的任何帖子
问题2:在更新方法中有一个更新用户的选项
{
"id": 2,
"title": "Post 1",
"image": null,
"user": 3
}
我试图将这些视图保留为基于类的视图,以减少代码行
解决方案
我们可以覆盖get_queryset
而不是queryset = Post.objects.all()
。
在 UpdatePostView 类中
def get_queryset(self):
return Post.objects.filter(user=self.request.user)
或继续使用queryset=
queryset = Post.objects.all()
def get_queryset(self):
return super().get_queryset().filter(user=self.request.user)
所以,只能访问他们的帖子。
推荐阅读
- javascript - 获取用户注册日期
- react-native - 有没有一种可能的方法可以在 react-native-router-flux 中使用 react-native-router-flux 制作子标题
- unity-container - 像使用 Unity IoC 一样映射
- angularjs - 尝试检索 JSON 时出现角度错误
- python - 带有 mpi4py 的 Openmpi 不能在多个节点上工作
- javascript - d3.js 使用 Class 和 Attr 为文本添加颜色
- javascript - 将 html 表单发送到 Django 项目中的电子邮件地址的最佳方式?
- image - 尝试在空对象引用上调用接口方法 java.lang.String com.facebook.react.bridge.ReadableMap 等
- reactjs - Meteor + React - 错误:目标容器不是 DOM 元素
- python - Tensorflow- 两个二维张量的笛卡尔积