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 до последней версии и исправлен. Спасибо всем за ваши комментарии и предложения.

0 ответов

Другие вопросы по тегам