serializers_QuerySet

2022/3/19 6:27:33

本文主要是介绍serializers_QuerySet,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

class BookSerializers(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)  # read_only 当前字段只读,前端可以不用传  write_only不给前端返回这个字段,但是前端新增和修改必须传
    标题 = serializers.CharField(max_length=64,source='title')
    price = serializers.DecimalField(max_digits=8, decimal_places=2)
    publish_time = serializers.DateTimeField()
    publish_id = serializers.IntegerField()
    # source 相当于起别名 在source=填真正的字段名
    出版社 = serializers.CharField(source="publish.name")
    # SerializerMethodField的方式,然后下面定义get_字段名的方法,一般用与Queryset对象的数据
    
    publish = serializers.SerializerMethodField(allow_null=True)
    # QuerySet对象直接。的方式是拿不出来的,需要遍历
    authors = serializers.SerializerMethodField()

    def get_publish(self,instance):  # instance就是book对象
        res = PublishSerializers(instance=instance.publish)
        return res.data
    def get_authors(self,instance):
        #两只方式
        author111 = instance.authors
        author = instance.authors.all()
        # lis = []
        dic ={}
        for i in author:
            res = AuthorSerializers(instance=i)
            dic.update({i:res.data})
            # lis.append({'xxx':res.data})#不能用get...
        return dic.values()
        # return lis

 



这篇关于serializers_QuerySet的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程