zoukankan      html  css  js  c++  java
  • django drf 改变retrive的pk查询字段

    lookup_filed可以改变retrive查询时默认以pk查询的逻辑

    from django.shortcuts import render
    
    from rest_framework import mixins,viewsets
    from .serializers import UserFavSerializer
    from .models import UserFav
    from rest_framework.permissions import IsAuthenticated
    # Create your views here.
    from rest_framework import permissions
    class IsOwnerOrReadOnly(permissions.BasePermission):
        """
        Object-level permission to only allow owners of an object to edit it.
        Assumes the model instance has an `owner` attribute.
        """
    
        def has_object_permission(self, request, view, obj):
            # Read permissions are allowed to any request,
            # so we'll always allow GET, HEAD or OPTIONS requests.
            if request.method in permissions.SAFE_METHODS:
                return True
    
            # Instance must have an attribute named `owner`.
            return obj.user == request.user
    
    class UserFavSetview(mixins.CreateModelMixin,mixins.ListModelMixin,
                         mixins.RetrieveModelMixin,
                         mixins.DestroyModelMixin,viewsets.GenericViewSet):
        permission_classes = (IsAuthenticated,IsOwnerOrReadOnly) #需登陆和需要是拥有者
        serializer_class = UserFavSerializer
        lookup_field = 'goods_id'
        # queryset = UserFav.objects.all()
        def get_queryset(self):
            return UserFav.objects.filter(user=self.request.user)
  • 相关阅读:
    星空雅梦
    星空雅梦
    Navicat permium快捷键
    Mysql建表+创建索引
    mysql 常见ALTER TABLE操作
    mysql常用的索引种类
    xShell终端中文乱码-解决方法
    git删除本地分支和远程分支
    git版本回退
    log4j2配置文件log4j2.xml详解
  • 原文地址:https://www.cnblogs.com/chenyishi/p/10661960.html
Copyright © 2011-2022 走看看