Получение JSON-объекта из конечной точки API вместо рендеринга медиафайлов , Django Rest Framework
В настоящее время я пытаюсь создать API, который отображает медиафайл вместо того, чтобы возвращать JSON-объект, но терплю неудачу. Вот как выглядит вызов:
Мой корневой API:
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
{
"modules": "http://127.0.0.1/store/modules/",
"builds": "http://127.0.0.1/store/builds/",
"cables": "http://127.0.0.1/store/cables/",
"junction_boxes": "http://127.0.0.1/store/junction_boxes/",
"trackers": "http://127.0.0.1/store/trackers/",
}
Когда я делаю вызов, скажем, конечной точки кабелей, я получаю что-то вроде этого:
[
{
"id": 1,
"tag": "ac_cable_1",
"manufacturer": "RANDOM",
"model": "output cable",
"size": 300.0,
"cores": 1,
"bending_radius": 12.0,
"diameter": 0.0332,
"material": "Al",
"imp": 249.0,
"ohm_km_20": 0.1,
"ohm_km_90": 0.132,
"reactance": 0.056,
"rate": 1.0,
"currency": "USD",
"architecture": "110",
"data_sheets": [
{
"id": 1,
"data_sheet": "http://127.0.0.1:27038/static/media/store/data_sheets/data_sheets/data_sheet_file.pdf",
"cable": 1
}
]
},
Если я перейду по адресу http://127.0.0.1/store/cables/1/data_sheets/, то в итоге получу следующий объект JSON вместо фактического листа данных:
[
{
"id": 1,
"data_sheet": "/static/media/store/data_sheets/data_sheet_file.pdf",
"cable": 1
}
]
Я ожидал, что после перехода к конечной точке data_sheets откроется сам файл, а не будет возвращен другой объект JSON, который затем содержит ссылку, которая при нажатии открывает и отображает файл на новой странице.
Это поведение по умолчанию или я делаю что-то не так?
Serializers.py:
class CableDataSheetSerializer(serializers.ModelSerializer):
def create(self, validated_data):
cable_id = self.context['cable_id']
return CableDataSheet.objects.create(cable_id=cable_id, **validated_data)
class Meta:
model = CableDataSheet
fields = ['id', 'data_sheet']
class CableSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(read_only=True)
data_sheets = CableDataSheetSerializer(many=True, read_only=True)
class Meta:
model = Cable
fields = [
'id', 'tag', 'manufacturer', 'model', 'size', 'cores', 'bending_radius', 'diameter', 'material', 'imp', 'ohm_km_20',
'ohm_km_90', 'reactance', 'rate', 'currency', 'architecture', 'data_sheets'
]