栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django序列化器A向ModleB中添加和查询数据

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django序列化器A向ModleB中添加和查询数据

1,添加

在序列化器A的create方法中

@atomic
def create(self, validated_data):
    self.pre_create(validated_data)
    attach_id_list = validated_data.pop('attach_id_list', [])
    parent = validated_data.get('parent', None)
    
   
    if parent:
        if parent.status != Ownership.m_status.FHW_NORMAL.to_dict():
            raise JicException("------")
        parent.status = Ownership.m_status.FHW_INVALID.to_dict()
        parent.save()
    status = Ownership.m_status.FHW_NORMAL.to_dict()
    validated_data['status'] = status
    instance = Ownership.objects.create(**validated_data)
    save_attach(instance, attach_id_list)
    owner_ship = instance
    #获取请求
    request =self.context.get("request")
    spaces=request.data.get("space_ids")
    create_by = validated_data.get("create_by", None)
    update_by = validated_data.get("update_by", None)
    create_time = time.strftime("%Y-%m-%d",time.localtime())
    update_time = time.strftime("%Y-%m-%d",time.localtime())
    if spaces:
        for space in spaces:
            my_dict = {"owner_ship_id": owner_ship.id, "space_id": space, "create_by": create_by, "update_by": update_by, "create_time": create_time, "update_time": update_time}
               #向另一个modle中保存数据
            ModleB.objects.create(**my_dict)
    return instance
2,查询
space_name = serializers.SerializerMethodField(help_text="----", read_only=True)
def get_space_name(self,obj):
    shipId = obj.id
    myObj = OwnershipRoom.objects.filter(owner_ship_id=shipId).all()
    spaceName = []
    if myObj:
        for space in myObj:
            spaceId = space.space_id
            spaceNo = LeaseSpace.objects.filter(id=spaceId).values("no")
            spaceName.append(spaceNo)
    return spaceName

序列化器:

序列化:由数据库查询后的数据格式化成json返回给前端进行展示

反序列化:由页面提交的数据,尽心校验格式化后存入数据库

如何看字段是序列化还是反序列化:看看定义的时候有read_only=True即为序列化字段,write_only=True 即为反序列字段,什么都不写代表二者皆可

,这时候需要注意 就像将字段写在了fields中 而序列化器中没有定义,代表既可以序列化又可以反序列化。

序列化器中一些关键的参数:

required=False: 表明该字段在反序列化器中非必须输入,默认是True

validtors:该字段使用的验证器

当进行序列化时(向前台返回)是可以根据自己的需要定义方法 牵扯到那些表直接用该表的模型类进行操作(主要是查询)记得添加read_only=True

将需要返回的字段名再添加到fields中

希望有所帮助!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/461407.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号