Python 如何在DRF序列化程序中创建自定义字段?

Python 如何在DRF序列化程序中创建自定义字段?,python,django,rest,serialization,django-rest-framework,Python,Django,Rest,Serialization,Django Rest Framework,我有模型交易 class Transaction(models.Model): created_at = models.DateTimeField() 以及其他具有OneToOneField和TransasAction的车型 class RefillTransactionData(models.Model): transaction = models.OneToOneField(Transaction, on_delete=models.CASCADE) class Purc

我有模型交易

class Transaction(models.Model):
    created_at = models.DateTimeField()
以及其他具有OneToOneField和TransasAction的车型

class RefillTransactionData(models.Model):
    transaction = models.OneToOneField(Transaction, on_delete=models.CASCADE)

class PurchaseTransactionData(models.Model):
    transaction = models.OneToOneField(Transaction, on_delete=models.CASCADE)
如何创建具有自定义字段“data”的序列化程序,该字段将包含其他序列化程序

一个Json shema应该是这样的

{
    created_at: "2020-10-01"
    data: {
        RefillTransactionData: {},
        PurchaseTransactionData: {}
    }
}

对于GET请求,我可以使用
to_表示法
来实现,但对于所有请求类型,我都需要相同的东西

from rest_framework.fields import Field, SerializerMethodField

class DictField(Field):
    """
    A field handle dict fields
    """
    type_name = 'dictfield'

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.style = {'base_template': 'textarea.html'}

    def to_representation(self, value):
        """" custom"""
        # do the customization according to u
        if isinstance(value, dict) or value is None:
            return value

    def to_internal_value(self, value):
        """ """
        # you can check and validate the data fromat
        if value == '' or value is None:
            return value
        pass

    def validate_empty_values(self, data):
        if data == '':
            self.fail('required')
        return super().validate_empty_values(data)