:
from rest_framework.reverse import reverse
class MySerializer(serializers.HyperlinkedModelSerializer):
custom_field = serializers.SerializerMethodField()
class Meta:
model = MyModel
fields = ('url', 'custom_field')
def get_custom_field(self, obj):
result = '{}?{}'.format(
reverse('my-view', args=[obj.id], request=self.context['request']),
'param=foo'
)
return result
rest_framework ( , ), args ( ), kwargs, ( self.context['request']). ( ), .
, URL- . , result ?{}&{}&{}, "param = foo" format , .
HyperlinkedIdentityField , . , HyperlinkedIdentifyField MyModel, HyperlinkedModelSerializer, HyperlinkedIdentityField , pk .
HyperlinkedRelatedField . , MySecondModel MyModel, MyModel MySecondModel, HyperlinkedRelatedField, , ( Meta):
class MySerializer(serializers.HyperlinkedModelSerializer):
custom_field = serializers.SerializerMethodField()
mysecondmodels = serializers.HyperlinkedRelatedField(
many=True
read_only=True,
view_name='mysecondmodel-detail'
)
class Meta:
model = MyModel
fields = ('url', 'custom_field', 'mysecondmodels')
def get_custom_field(self, obj):
result = '{}?{}'.format(
reverse('my-view', args=[obj.id], request=self.context['request']),
'param=foo'
)
return result
OneToOneField, ForeignKey MySecondModel, many = False.
, !