Django Контекст набора данных сериализатора - PullRequest
0 голосов
/ 27 февраля 2020

Есть ли способ получить доступ ко всему набору данных, который будет обработан сериализатором, прежде чем он это сделает.

Причина этого заключается в том, что есть массовый процесс, который я хотел бы сделать, прежде чем сериализовать данные. Это сделано для того, чтобы я мог улучшить производительность процесса сериализации, чтобы повысить скорость доставки клиенту (это не требуется при создании только при получении)

class MySerializer(serializers.ModelSerializer):

    def before_process(self, *args, **kwargs):
        # TODO: Some bulk work here with the self.full_unprocessed_dataset
        self.bulk_results = from_the_above_result

    def some_function_field(self):
        return self.bulk_results['some_key']

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Вы можете использовать update метод на Serializer?

class CommentSerializer(serializers.Serializer):
    email = serializers.EmailField()
    content = serializers.CharField(max_length=200)
    created = serializers.DateTimeField()

    def create(self, validated_data):
        return Comment(**validated_data)

    def update(self, instance, validated_data):
        instance.email = validated_data.get('email', instance.email)
        instance.content = validated_data.get('content', instance.content)
        instance.created = validated_data.get('created', instance.created)
        return instance
0 голосов
/ 27 февраля 2020

Вы можете использовать метод проверки.

class MySerializer(serializers.ModelSerializer):

    def validate(self,attrs):
    # your data inside attrs you can access like that
        your_field_value = attrs['your_field']
...