serializers.PrimaryKeyRelatedField()是Django REST Framework(DRF)提供的一个序列化字段类

news/2024/7/5 7:57:06

1.serializers.PrimaryKeyRelatedField()是Django REST Framework(DRF)提供的一个序列化字段类,用于在序列化和反序列化过程中处理其他模型之间的关联关系。
该字段类接受一个参数,即关联模型的主键。它将根据这个主键自动序列化和反序列化关联对象。
使用PrimaryKeyRelatedField()可以实现以下功能:
1.序列化:

  1. 在序列化数据时,将关联对象的主键作为字段值返回。
  2. 可以通过设置queryset参数来过滤可选的关联对象集合。
  3. 可以通过设置many=True参数来处理多对多或一对多的关联关系。

2.反序列化:

  1. 在反序列化数据时,会根据传入的主键值创建或更新关联对象。
  2. 可以通过设置queryset参数来限制可用的关联对象集合。
  3. 可以通过设置allow_null参数来允许空值关联。

下面是一个示例,演示如何使用PrimaryKeyRelatedField()进行序列化和反序列化:

from rest_framework import serializers
class ChannelCodeMultiSetTeamSerializer(serializers.Serializer):
    # 当设置write_only=True表明这个是在反序列化并且只希望进行创建和更新操作
    team = serializers.PrimaryKeyRelatedField(
        queryset=Team.objects.all(), required=True, help_text='团队', write_only=True
    )
    channelcodes = serializers.PrimaryKeyRelatedField(
        queryset=ChannelCode.objects.all(), required=True, help_text='活码', write_only=True, many=True
    )

    class Meta:
        fields = '__all__'

在view.py中使用上面的序列化对象

    def multi_set_team(self, request):
        """
        批量设置团队
        对前端穿过来的data进行反序列化
        """
        serializer = ChannelCodeMultiSetTeamSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)

        ChannelCode.multi_set_team(serializer.validated_data['team'], serializer.validated_data['channelcodes'])
        return DetailResponse()


http://lihuaxi.xjx100.cn/news/1367786.html

相关文章

RocketMQ集成Springboot --Chapter5

RocketMQ tag过滤和sql92语法过滤 tag过滤 生产者,由于springboot没有专门对mq进行tag标记的方法,只是在topic:后面加上,所以只需 rocketMQTemplate.sendOneWay(“tagFilterBoot:TagA”,msg1);标记即可 生产者代码如下 /***生产者* tag过滤*…

Python 模块 ddt 数据驱动测试

简介 ddt 提供了一种方便的方法来实现数据驱动测试(Data-Driven Testing)。数据驱动测试是一种测试方法,通过将测试数据与测试逻辑分开,可以使用不同的数据集来运行相同的测试用例。这样可以提高测试的灵活性和可维护性&#xff0…

“深入探究Spring Boot:从入门到精通“

标题:深入探究Spring Boot:从入门到精通 摘要:Spring Boot是一个快速开发框架,它简化了Spring应用的搭建和配置。本文将从入门到精通,介绍Spring Boot的核心概念和用法,并通过示例代码详细解释每个概念。 …

【网络代理】(三)Docker+Haproxy 搭建四层代理

目录 1.1 创建 web 服务器镜像 1.2 启动 web 服务器容器 2.1 编写 haproxy 配置文件 2.2 拉取 haproxy 镜像 2.3 启动 haproxy 容器 3.1 访问 8000 端口 3.2 查看 web 服务器容器日志 附录:haproxy 仪表板 1.1 创建 web 服务器镜像 编写一个 Docke…

深入理解 PostgreSQL 的架构和内部工作原理

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

Centos Certbot 使用

安装 可选配置:启动EPEL存储库 非必要项 yum install -y epel-release yum clean all yum makecache #启用可选通道 可以不配置 yum -y install yum-utils yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional必要配置…

进程间的通信之管道(匿名管道)

文章目录 进程间通信(IPC)管道管道特点为什么可以使用管道进行进程间通信管道数据结构匿名管道的使用 管道实例管道读写特点管道设置非阻塞 进程间通信(IPC) inter process conmmunication 👇👇&#x1f…

Istio Pilot源码学习(一):Pilot-Discovery启动流程、ConfigController配置规则发现

本文基于Istio 1.18.0版本进行源码学习 1、Pilot-Discovery工作原理 Pilot-Discovery是Istio控制面的核心,负责服务网格中的流量管理以及控制面和数据面之间的配置下发 Pilot-Discovery从注册中心(如Kubernetes)获取服务信息并汇集&#xff…