Django Rest Framework: у атрибута 'image' нет связанного с ним файла
Я использую Django Rest Framework для создания конечных точек REST для внешнего интерфейса. У меня есть модель, где есть возможность загрузки 3-х изображений (foto_1, foto_2, foto_3).
class Ocorrencia(TimeStampedModel):
(...)
foto_1 = models.ImageField("Foto 1", upload_to="ocorrencias/", blank=True)
foto_2 = models.ImageField("Foto 2", upload_to="ocorrencias/", blank=True)
foto_3 = models.ImageField("Foto 3", upload_to="ocorrencias/", blank=True)
Мой сериализатор выглядит следующим образом:
class OcorrenciaSerializer(GeoFeatureModelSerializer):
(...)
foto_1 = serializers.ImageField(allow_empty_file=True, allow_null=True, required=False, use_url=True)
foto_2 = serializers.ImageField(allow_empty_file=True, allow_null=True, required=False, use_url=True)
foto_3 = serializers.ImageField(allow_empty_file=True, allow_null=True, required=False, use_url=True)
class Meta:
model = models.Ocorrencia
geo_field = 'geometria'
fields = ('foto_1', 'foto_2', 'foto_3')
Если, например, foto_3 не имеет URL файла, связанного с базой данных (он сохраняется как пустая строка, когда он пуст), тогда я получаю следующую ошибку при получении связанной конечной точки:
Значение исключения: Атрибут 'foto_3' не имеет связанного с ним файла.
Использование allow_empty_file = True, allow_null = True, required = False, когда определение сериализатора для полей изображения, похоже, ничего не делает.
ОБНОВЛЕНИЕ 1
Я обнаружил, что это связано с использованием GeoFeatureModelSerializer, это часть Django Rest Framework GIS. Мне придется искать решение на этом пути. Если мне случится использовать сериализатор по умолчанию класса DRF, у меня нет проблем. Я почти сходил с ума от этой проблемы. Если я найду решение с помощью GeoFeatureModelSerializer, я опубликую его здесь.
ОБНОВЛЕНИЕ 2
Обновлен Django-Rest-Framework-Gis до последней версии и исправлен. Спасибо всем за ваши комментарии и предложения.