drf-更新四大接口-单改整体-单改局部-群改整体-群改局部-04
发布日期:2021-05-14 13:55:49 浏览次数:23 分类:精选文章

本文共 3362 字,大约阅读时间需要 11 分钟。

???????????????

???????

????

class BaseModel(models.Model):
is_delete = models.BooleanField(default=False)
class Meta:
abstract = True
class Car(BaseModel):
name = models.CharField(max_length=64)
@property
def my_name(self):
return '???????'

????

class CarModelSerializer(ModelSerializer):
class Meta:
model = models.Car
fields = ('name', )
extra_kwargs = {
'name': {
'write_only|read_only': True
}
}

??????????

????

  • ????????put??
    V2BookModelSerializer(
    instance=???????,
    data=???????,
    partial=False
    )
  • 2. **?????**???`patch`??
    ```python
    V2BookModelSerializer(
    instance=???????,
    data=???????,
    partial=True
    )

    ???????????

    ???????

    class V2Book(APIView):
    def put(self, request, *args, **kwargs):
    request_data = request.data
    pk = kwargs.get('pk')
    old_book_obj = models.Book.objects.filter(pk=pk).first()
    book_ser = serializers.V2BookModelSerializer(
    instance=old_book_obj,
    data=request_data,
    partial=False
    )
    book_ser.is_valid(raise_exception=True)
    book_obj = book_ser.save()
    return Response({
    'status': 0,
    'msg': 'ok',
    'results': serializers.V2BookModelSerializer(book_obj).data
    })

    ??????

    ListSerializer ??

    class V2BookListSerializer(ListSerializer):
    def update(self, instance, validated_data):
    for index, obj in enumerate(instance):
    self.child.update(obj, validated_data[index])
    return instance

    ????????

    class V2BookModelSerializer(ModelSerializer):
    class Meta:
    list_serializer_class = V2BookListSerializer

    ???????

    ?????

    class V2Book(APIView):
    def patch(self, request, *args, **kwargs):
    request_data = request.data
    pk = kwargs.get('pk')
    if pk and isinstance(request_data, dict):
    pks = [pk]
    request_data = [request_data]
    elif not pk and isinstance(request_data, list):
    pks = []
    for dic in request_data:
    pk = dic.pop('pk', None)
    if pk:
    pks.append(pk)
    else:
    return Response({
    'status': 1,
    'msg': '????'
    })
    if not pks:
    return Response({
    'status': 1,
    'msg': '????'
    })
    objs = []
    new_request_data = []
    for index, pk in enumerate(pks):
    try:
    obj = models.Book.objects.get(pk=pk)
    objs.append(obj)
    new_request_data.append(request_data[index])
    except:
    continue
    book_ser = serializers.V2BookModelSerializer(
    instance=objs,
    data=new_request_data,
    partial=True,
    many=True
    )
    book_ser.is_valid(raise_exception=True)
    book_objs = book_ser.save()
    return Response({
    'status': 0,
    'msg': 'ok',
    'results': serializers.V2BookModelSerializer(book_objs, many=True).data
    })

    ??

    ????????????????????????????????????????????????????????????????

    上一篇:Intellij IDEA导入JAVA项目并启动 - IDEA如何运行 Java 项目
    下一篇:Js 网页全屏(vue)-2020-08-26-亲测兼容 F11、ESC的全屏操作

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年05月03日 18时21分21秒