DRF SerializerMethodField игнорирование результата
У меня есть 2 сериализатора (один вложен в другой). Мне нужно передать контекст, чтобы я мог получить абсолютный url. Я вижу, что это работает, основываясь на печати во время выполнения. Но фактический результат игнорирует метод и просто возвращает стандартный результат (я предполагаю, потому что он не думает, что у него есть контекст).
class ProjectNoteFileSerializer(serializers.ModelSerializer):
thumb = serializers.SerializerMethodField()
def get_thumb(self, obj):
try:
print(self.context.get("request")) #this actually prints like it does have it
thumbnail = get_thumbnailer(obj.path)["big"].url
return self.context.get("request").build_absolute_uri(thumbnail)
except:
return None
class Meta(object):
model = models.ProjectNoteFile
fields = ("id", "path", "thumb")
class ProjectQuestionnaireSectionSerializer(serializers.ModelSerializer):
note_files = serializers.SerializerMethodField()
def get_note_files(self, obj):
serializer_context = {"request": self.context.get("request")}
serializer = ProjectNoteFileSerializer(
obj.note_files.all(),
many=True,
context=serializer_context,
)
print(serializer.data) #prints results as expected
return serializer.data
class Meta(object):
model = models.ProjectQuestionnaireSection
fields = (
...
"note_files",
...
)
Мой фактический результат
"note_files": [
{
"id": 1,
"path": "/media/project_notes/project_note_d5c598da-d4e8-480e-a50a-c474d57a7d44.png",
"thumb": null
}
],
У меня есть другие версии этого, работающие во всем приложении. Может быть, я упускаю что-то основное?
Распечатка значения с терминала показывает, что у меня должны быть нужные данные.
[OrderedDict([('id', 1), ('path', 'http://localhost:8000/media/project_notes/project_note_d5c598da-d4e8-480e-a50a-c474d57a7d44.png'), ('thumb', 'http://localhost:8000/media/project_notes/project_note_d5c598da-d4e8-480e-a50a-c474d57a7d44.png.500x500_q85.png')])]