Привет! Я использую полевой сериализатор, чтобы иметь возможность сериализовать поле PK и десериализовать его как объект. Внутри сериализатора есть SerializerMethodField
для создания пользовательского URL. Это работает, когда я использую себя из сериализации своей собственной записи. Однако когда я использую его для другого сериализатора как FieldSerializer
, объект request
не передается.
class TelemetryFileSerializer(serializers.ModelSerializer):
telemetry_type = serializers.SlugRelatedField(
slug_field='name', queryset=TelemetryFileType.objects.all())
receiving_station = serializers.SlugRelatedField(
required=False, slug_field='name', queryset=ReceivingStation.objects.all())
link = serializers.SerializerMethodField()
class Meta:
model = TelemetryFile
fields = '__all__'
def get_link(self, object):
request = self.context.get('request')
print(self.context) # request is not passed here from RawImageSerializer/TelemetryFileField
return request.build_absolute_uri('/data_management/telemetry_files/{}'.format(object.id))
class TelemetryFileField(serializers.PrimaryKeyRelatedField):
def to_representation(self, value):
pk = super(TelemetryFileField, self).to_representation(value)
item = TelemetryFile.objects.get(pk=pk)
serializer = TelemetryFileSerializer(item)
return serializer.data
class RawImageSerializer(serializers.ModelSerializer):
from_telemetry_file = TelemetryFileField(queryset=TelemetryFile.objects.all())
link = serializers.SerializerMethodField()
Я хочу передать запрос самого себя, чтобы иметь возможность создать его URL , Это возвращается, когда я использую RawImageSerializer
:
AttributeError: у объекта 'NoneType' нет атрибута 'build_absolute_uri'
Должен быть способ пройти request
из сериализатора в другой ...