django 如何为序列化模型添加更多参数以使用at to_presentation

nzkunb0c  于 2023-05-30  发布在  Go
关注(0)|答案(1)|浏览(155)

这是我的儿子

class DataFieldSerializer(serializers.ModelSerializer):

    class Meta:
        model = DataField
        fields = ["field", "topic", "category", "group", "alias", "units"]

    def __init__(self, *args, **kwargs):
        self.extra_param = kwargs.pop('extra_param', None)
        super().__init__(*args, **kwargs)

    def to_representation(self, instance):
        data = super().to_representation(instance)
        print("Extra Param:", self.extra_param)

这就是我如何调用DataFieldSerializer

result_data = DataFieldWithUnitsSerializer(data_fields, many=True, extra_param='example').data

当我运行代码时,我得到了这个结果

Extra Param:None

我想这不是向模型序列化器中添加更多参数的正确方法。
总而言之,我想找到一种方法,将一个额外的参数传递给序列化器模型

xienkqul

xienkqul1#

我认为最好的方法是通过context发送,如下所示:

#serializer
class DataFieldSerializer(serializers.ModelSerializer):

    class Meta:
        model = DataField
        fields = ["field", "topic", "category", "group", "alias", "units"]

    def to_representation(self, instance):
        data = super().to_representation(instance)
        print("Extra Param:", self.context.get('extra_param'))

# usage
result_data = DataFieldWithUnitsSerializer(data_fields, many=True, context= {'extra_param': 'example'}).data

相关问题