DRF:无法使用HyperlinkedIdentityField将URL转换为实例

时间:2019-11-07 02:21:11

标签: django django-rest-framework

如何使用HyperlinkedIdentifyField将网址转换为实例?

我有几个嵌套的HyperlinkedModelSerializer:

class ChildSerializer(HyperlinkedModelSerializer):
    class Meta:
        model = Child
        fields = ('url', 'name')
        extra_kwargs = {
            'name': {'required': False}
        }

class ParentSerializer(HyperlinkedModelSerializer):
    class Meta:
        model = Parent
        fields = ('url', 'child')

但这不起作用:

>>> s = ParentSerializer(data={'child': {'url': '<valid url>'}})
>>> s.is_valid()
True
>>> s.validated_data()
OrderedDict([('child', OrderedDict())])

出于任何原因,to_instance_value中的HyperlinkedModelSerializer不会检索实际对象。

因此,显而易见的解决方案是重写此方法,但是我无法解决如何获取HyperlinkedIdentityField的{​​{1}}以返回内部值。我有一个正在工作的kludge:

ChildSerializer

但是我觉得必须有一种 机制,可以从我在这里缺少的有效URL中检索对象...

0 个答案:

没有答案