我正在尝试让Django的动态字段序列化程序工作。你知道吗
到目前为止,我已经尝试了一些方法:
以下是我的实现:
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',)
我没有发现任何错误,但当我在浏览器的restapi视图中查看它时,它似乎没有接收到更改。同样,如果我把一个调试器放在带有.update()
语句的行的前面,运行.update()
,它实际上会返回我期望的结果。
如果有人能指出我做错了什么,我将不胜感激。提前谢谢
目前没有回答
相关问题 更多 >
编程相关推荐