django rest框架序列化程序的混合

djangorestframework-serializer-mixins的Python项目详细描述


https://travis-ci.org/allisson/django-rest-framework-serializer-mixins.svg?branch=masterhttps://codecov.io/gh/allisson/django-rest-framework-serializer-mixins/branch/master/graph/badge.svghttps://img.shields.io/pypi/v/djangorestframework-serializer-mixins.svghttps://img.shields.io/github/license/allisson/djangorestframework-serializer-mixins.svghttps://img.shields.io/pypi/pyversions/djangorestframework-serializer-mixins.svg< djang-REST框架序列化器

如何安装

pip install djangorestframework-serializer-mixins

如何使用

假设您有一个post模型:

# testapp/models.pyfromdjango.confimportsettingsfromdjango.dbimportmodelsclassPost(models.Model):user=models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,related_name='posts')title=models.CharField(max_length=128)body=models.TextField()created_at=models.DateTimeField(auto_now_add=True)updated_at=models.DateTimeField(auto_now=True)def__str__(self):returnself.titleclassMeta:ordering=['-created_at']

用动态FixFielSmixIn编写动态后置串行器:

# testapp/serializers.pyfromrest_frameworkimportserializersfromrest_framework_serializer_mixinsimportDynamicFieldsMixinfrom.modelsimportPostclassDynamicPostSerializer(DynamicFieldsMixin,serializers.ModelSerializer):classMeta:model=Postfields=('body','created_at','id','title','updated_at','user',)read_only_fields=('id','user',)

现在,您可以定义字段并像这样读取“只读”字段:

>>>fromdjango.contrib.auth.modelsimportUser>>>fromtestapp.modelsimportPost>>>fromtestapp.serializersimportDynamicPostSerializer>>>user=User.objects.create_user('user','user@email.com','123456')>>>post=Post.objects.create(user=user,title='My Title',body='My Body')>>>data=DynamicPostSerializer(post)# return fields and read_only_fields from Meta>>>serializer=DynamicPostSerializer(post)# return fields and read_only_fields from Meta>>>serializer.data{'body':'My Body','created_at':'2018-02-14T14:15:29.772209Z','id':1,'title':'My Title','updated_at':'2018-02-14T14:15:29.772312Z','user':1}>>>serializer=DynamicPostSerializer(post,fields=('title','body'))# return only title and body fields>>>serializer.data{'body':'My Body','title':'My Title'}>>>serializer=DynamicPostSerializer(post,read_only_fields=('title','body'),data={'title':'New Title','body':'New Body'})# set title and body as read_only_fields>>>serializer.is_valid()True>>>serializer.save()<Post:MyTitle>>>>serializer.data{'body':'My Body','created_at':'2018-02-14T14:15:29.772209Z','id':1,'title':'My Title','updated_at':'2018-02-14T14:19:14.838001Z','user':1}# title and body don't change

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java静态键入和编写一个简单的矩阵库   java如何最小化层次结构的代码量   这是在Google云数据存储中使用Java按键查询的正确方法吗?   java Android php+mysql+json执行异步任务时出错   java Hadoop Hbase访问被拒绝异常   java如何在json中指定特定的对象路径   JavaSpringJPA/Hibernate在使用@modify和@Query进行特殊更新之前调用完整更新   java多个错误通知   java插入Linkedlist和Node   java将图像放在webview中并调整其宽度   Java没有真实属性的缺点是什么?   java“isGooglePlayServicesAvailable”(此)已被弃用   java托管HIPPO CMS   安卓 Java。网URI构造函数不是编码字符(&C)   java如何用hibernate映射Deque?   java传递枚举类型作为参数   java自由堆大小在Maven中不会增加   java如何使用hashmap和arraylist的循环逻辑?   java如何使用JDBC复制MySql数据库