问题01:Django枚举类型扩展方法(Model.get_FOO_display())
- 问题
# 标准的枚举写法
EXPERIENCE_CHOICES = (
(1, '应届毕业生'),
(2, '3年及以下'),
...
)
# 偷懒的枚举写法
EXPERIENCE_CHOICES = (
('应届毕业生', '应届毕业生'),
('应届毕业生', '3年及以下'),
...
)
原因主要是很多人不会枚举类型的序列化
- 解决办法
问题02:Serializer增加自定义字段
- 问题
# 假设现在有一个Animal模型,其中有name, type, country字段,country为外键。我们在序列化Animal时,需要额外增加外键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
# 1、SerializerMethodFiel是一个read-only字段
# 2、当不指定其method_name时,默认为get_<field_name>
# 3、如果使用ModelSerializer并指定字段时,要包含此时定义的字段
- 扩展链接
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。