Я пытаюсь получить Сериализатор динамического поля Джанго работает.
Пока я пробовал несколько вещей:
- Поля динамического изменения
Вот моя реализация:
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()
, он на самом деле вернет то, что я ожидаю.
Было бы очень признательно, если бы кто-то мог указать мне на чтоя делаю неправильноЗаранее спасибо