drf序列化类中PrimaryKeyRelatedField字段的使用
PrimaryKeyRelatedField
该字段可以用来映射外键字段,在反序列化的时候,不管与当前序列化类所对应的模型表有没有关联,前端只需要传一个包含多个主键值值的列表,然后传入参数queryset对应一个模型表,那么就会在序列化类里生成该表对应主键的该对象放在列表内。在序列化的时候,就只能是有外键字段才行,无关联的字段会报错。
多用在外键不在该表的时候(反向查询),或者两表没有任何关系,只是需要另一张表的对象来进行数据的校验和处理,这样直接写一个字段,来接收与之关联表的主键,让PrimaryKeyRelatedField来转化成对应的对象
class OrderSerializer(serializers.ModelSerializer):
# PrimaryKeyRelatedField的用法是把前端传来的列表通过指定的表按主键来取出对象的对象放进列表中
# 如果是多个数据一定要写many=True 不然会报错
courses_list = serializers.PrimaryKeyRelatedField(queryset=Course.objects.all(), many=True)
class BookModelSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ['id', 'title', 'price', 'author', 'publish', 'publish_name']
# 单个数据就不需要many=True 并且前端传的数据就不需要是列表,直接是单独的主键值
publish = serializers.PrimaryKeyRelatedField(queryset=Publish.objects.all(), write_only=True)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了