Динамически создавать поля в сериализаторах Django - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь получить Сериализатор динамического поля Джанго работает.

Пока я пробовал несколько вещей:

  1. Поля динамического изменения

Вот моя реализация:

class DynamicFieldsModelSerializer(serializers.ModelSerializer):
    def __init__(self, *args, **kwargs):
        super(DynamicFieldsModelSerializer, self).__init__(*args, **kwargs)

        dd={}
        for i, h in enumerate(settings.LOCATION_HIERARCHY):
            dd[f'step_{i}'] = serializers.CharField(trim_whitespace=True)

        if dd is not None:
            self.data.update(dd)

и затем из фактического сериализатора (снова в serializers.py):

class LocationSerializer(DynamicFieldsModelSerializer):

    class Meta:
        model = Location
        exclude = ('some', 'fields', 'to', 'exclude',)

С views.py:

class LocationEntry(GenericAPIView):
    serializer_class = LocationSerializer
SerializerMethod

Вот моя версия:

class LocationSerializer(serializers.ModelSerializer):
    field_name = serializers.SerializerMethodField('')

    def get_field_name(self, foo):
        dd={}
        for i, h in enumerate(settings.LOCATION_HIERARCHY):
            dd[f'step_{i}'] = serializers.CharField(trim_whitespace=True)
        return dd

    class Meta:
        model = Location
        exclude = ('some', 'fields', 'to', 'exclude',)
Добавление его в качестве свойства к фактической модели

Я не получаю никаких ошибок, но когда я смотрю на это в представлении REST API вбраузер не похоже, что он собирает изменения.Также, если я поставлю отладчик, прямо перед строкой с оператором .update() и запуском .update(), он на самом деле вернет то, что я ожидаю.

Было бы очень признательно, если бы кто-то мог указать мне на чтоя делаю неправильноЗаранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...