Я столкнулся с проблемой при попытке отправить массив изображений с внешнего интерфейса (ReactJS) на внутренний (Django). Экземпляр объекта не сохраняется в бэкэнде из-за обязательного ArrayField в модели Django. Я использую PostgreSQL с Django. Вот почему я могу использовать ArrayField.
Я уже пытался использовать встроенный (to_internal_value) метод в сериализаторе, чтобы попытаться сохранить данные, полученные из внешнего интерфейса.
https://www.django -rest-framework.org / апи-гид / поля /
Ниже приведена часть модели Джанго, которую я сделал:
...
lot_location_market = models.CharField(max_length=30, null=True, blank=False)
quality = models.CharField(max_length=250, null=True, blank=True)
remarks = models.CharField(max_length=250, null=True, blank=True)
layer_image = models.ArrayField(models.FileField(upload_to=get_file_path, null=False, blank=False))
Я использую модельный сериализатор.
Код сериализатора:
class FooSerializer(serializers.ModelSerializer):
product_name = serializers.CharField(source='product.name', read_only=True)
class Meta:
model = Foo
fields = (
...
'lot_location_market',
'remarks',
'quality',
'layer_image',
)
Я использую CreateAPIView (он расширяет CreateModelMixin и GenericAPIView)
Ниже приведено представление для создания экземпляра Foo из API
class Foo(generics.CreateAPIView):
permission_classes = (permissions.IsAuthenticated,)
lookup_field = 'id'
serializer_class = FooSerializer
def get_queryset(self):
return Foo.objects.all()
def perform_create(self, serializer):
serializer.save()