我们从Python开源项目中,提取了以下3个代码示例,用于说明如何使用rest_framework.serializers.HyperlinkedModelSerializer()。
def _get_id_field(self, serializer): if isinstance(serializer, HyperlinkedModelSerializer): return serializer.url_field_name else: return None
def update(self, instance, validated_data): """Update. :param instance: :param validated_data: :return: """ # Collect information on nested serializers __nested_serializers, __nested_serializers_data = \ extract_nested_serializers( self, validated_data, ) # Update the instance instance = super(HyperlinkedModelSerializer, self).update( instance, validated_data ) # Assign fields to the `instance` one by one set_instance_values( __nested_serializers, __nested_serializers_data, instance ) # Save the instance and return instance.save() return instance
def _validate_configuration(self): meta_cls = getattr(self, 'Meta', None) if meta_cls is None: raise ex.ApimasException('`Meta` class cannot be found') model_fields = getattr(meta_cls, 'model_fields', []) fields = getattr(meta_cls, 'extra_fields', []) if not (fields or model_fields): raise ex.ApimasException( '`extra_fields` and `model_fields` attributes are not' ' specified') if not (self.model_ser_cls or self.ser_cls): raise ex.ApimasException( 'A `ContainerSerializer` must define a `ModelSerializer` class' ' or a `Serializer class') if not (self.model_ser_cls or self.ser_cls): raise ex.ApimasException( 'A `ContainerSerializer` must include a ModelSerializer' ' and Serializer class') if self.model_ser_cls: mro = inspect.getmro(self.model_ser_cls) if serializers.HyperlinkedModelSerializer not in mro: raise ex.ApimasException( 'A model serializer class must inherit' ' `serializers.ModelSerializer`') if self.ser_cls: mro = inspect.getmro(self.ser_cls) if serializers.BaseSerializer not in mro: raise ex.ApimasException( 'A serializer class must implement' ' `serializers.BaseSerializer`') return model_fields, fields