Python源码示例:rest.HyperlinkedIdentityField()
示例1
def get_related_object_url(self, obj, field):
try:
obj = getattr(obj, field)
if callable(obj):
obj = obj()
default_view_name = '%(model_name)s-detail'
format_kwargs = {
'app_label': obj._meta.app_label,
'model_name': obj._meta.object_name.lower()
}
view_name = default_view_name % format_kwargs
s = serializers.HyperlinkedIdentityField(source=obj, view_name=view_name)
s.initialize(self, None)
return s.field_to_native(obj, None)
except Exception as e:
print('WARN', e)
return None
示例2
def to_representation(self, value):
# HyperlinkedIdentityField demands a request when creating
# urls, but one is not always available. Instead of erroring
# out hard, fake it.
if "request" not in self.context:
self.context["request"] = None
return super().to_representation(value)
示例3
def get_resources(self, obj):
child = serializers.HyperlinkedIdentityField(
view_name=self.resources_view_name
)
field = serializers.ListField(child=child)
field.parent = self
return field.to_representation(obj.resources.all())
示例4
def _get_related_fields(self, fields, id_field):
return [k for (k, v) in fields
if k != id_field
and (isinstance(v, HyperlinkedRelatedField)
or isinstance(v, HyperlinkedIdentityField)
or isinstance(v, ItemLinkField)
or (isinstance(v, ManyRelatedField)
and isinstance(v.child_relation, HyperlinkedRelatedField)))]
示例5
def __init__(self, kind=None, **kwargs):
self.view_name = "archives-distillation"
self.distillation = kind
serializers.HyperlinkedIdentityField.__init__(
self, view_name=self.view_name, **kwargs)