我正在尝试使 Django的Dynamic Field Serializer 正常工作。
到目前为止,我已经尝试了一些方法:
这是我的实现方式:
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
这是我的版本:
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()
,它实际上会返回我期望的结果。
如果有人可以指出我在做什么错,那将非常感谢。预先感谢