django restframework serializer 增加自定义字段
2017-05-06 11:14
615 查看
在使用django restframework serializer 序列化在django中定义的model时,有时候我们需要额外在serializer中增加一些model中没有的字段。有两种方法实现这个目的。
假设现在有一个Animal模型,其中有name, type, country字段,country为外键。我们在序列化Animal时,需要额外增加外键country的area信息。
方法一:
1.首先,在django的model中定义property
2.然后在定义django restframework的serializer时,使用字段的source参数指向我们上面定义好的property
方法二:
不修改django的model,直接使用SerializerMethodField(method_name=None)字段
几点说明:
SerializerMethodFiel是一个read-only字段
当不指定其method_name时,默认为get_<field_name>
如果使用ModelSerializer并指定字段时,要包含此时定义的字段
假设现在有一个Animal模型,其中有name, type, country字段,country为外键。我们在序列化Animal时,需要额外增加外键country的area信息。
方法一:
1.首先,在django的model中定义property
class Animal(models.Model): name = models.CharField(max_length=50, default='') type = models.CharField(max_length=50, default='') country = models.ForeignKey(Country, blank=True, null=True) @property def country_area(self): return self.country.area
2.然后在定义django restframework的serializer时,使用字段的source参数指向我们上面定义好的property
class AnimalSerializer(serializers.Serializer): pk = serializers.IntegerField(read_only=True) name = serializers.CharField(max_length=50) type = serializers.CharField(max_length=50) country = serializers.PrimaryKeyRelatedField(read_only=True) country_area = serializers.FloatField(required=False, source='country_area’)
方法二:
不修改django的model,直接使用SerializerMethodField(method_name=None)字段
class AnimalSerializer(serializers.ModelSerializer): country_area = serializers.SerializerMethodField() class Meta: model = Animal fields = ('id', 'name', 'type','country','country_area') def get_country_area(self, obj): return obj.country.area
几点说明:
SerializerMethodFiel是一个read-only字段
当不指定其method_name时,默认为get_<field_name>
如果使用ModelSerializer并指定字段时,要包含此时定义的字段
相关文章推荐
- django restframework serializer 增加自定义字段
- django restframework serializer 增加自定义字段
- django restframework serializer 增加自定义字段
- Django REST framework的各种技巧——2.serializer
- Django rest_framework自定义异常
- django rest framework Serializer
- django rest_framework比较完整的自定义实现样例
- Django REST framework的技巧—— 2.serializer
- Django REST framework
- django rest framework 入门1-序列化 Serialization
- Django REST framework
- Django REST framework
- visual studio 2013 Entity Framework 6 MVC 5 体验(一)修改默认数据库,增加自定义字段
- django-rest-framework 快速开始
- Django-Rest-Framework 教程: 1. 序列化 (Serialization)
- django自定义Field实现一个字段存储以逗号分隔的字符串
- django自定义Field实现一个字段存储以逗号分隔的字符串
- tastypie Django REST framework
- Django REST framework(官方教程-六)
- Django REST Framework Tutorial 3:基于类的Views(中文版教程)by hillfree