简体   繁体   English

如何在Django Rest Framework中使用自定义字段进行序列化?

[英]How to serialize in Django Rest Framework with custom fields?

Let's say my model is: 假设我的模型是:

class Contact(models.Model):
    email = models.CharField(max_length=50)

I want to have a serializer that receives multiple fields and then combine them to create an email. 我希望有一个接收多个字段的序列化器,然后将它们组合以创建电子邮件。 For example: 例如:

class ContactSerializer(serializers.Serializer):
    first = serializers.CharField()
    second = serializers.CharField()
    third = serializers.CharField()

It would convert {"first": "user", "second": "example", "third": "org"} to a new Contact object with the email 'user@example.org'. 它将使用电子邮件“ user@example.org”将{“ first”:“ user”,“ second”:“ example”,“ third”:“ org”}转换为新的Contact对象。

What should I do? 我该怎么办?

You can override serializer's create method: 您可以覆盖序列化程序的create方法:

class ContactSerializer(serializers.Serializer):
    first = serializers.CharField()
    second = serializers.CharField()
    third = serializers.CharField()

    def create(self, validated_data):
        email = '{0}@{1}.{2}'.format(validated_data['first'], validated_data['second'], validated_data['third'])
        instance = Contact.objects.create(email=email)
        return instance  

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM