在尝试将图像数组从前端(ReactJS)发送到后端(Django)时遇到问题。由于Django模型中必须使用ArrayField,因此无法在后端保存对象实例。我在Django中使用PostgreSQL。这就是为什么我可以使用ArrayField的原因。
我已经尝试在序列化器中使用内置的(to_internal_value)方法来尝试保存从前端接收的数据。
https://www.django-rest-framework.org/api-guide/fields/
以下是我制作的Django模型的一部分:
...
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)
以下是用于通过API创建Foo实例的视图
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()
答案 0 :(得分:0)
“每个序列化程序字段类构造函数都至少接受这些参数。”正如您链接的文档中指出的那样。
我对您的班级建模会有所不同。我将创建一个单独的类来处理图像上传并使用一对多字段。与非本地灭菌器/验证相比,它使渲染,显示和操作容易得多。
class Foo(models.Model):
some_stuff_for_foo=models.CharField()
class Bar:
foo=models.ForeignKey(fFoo,on_delete=models.CASCADE,related_name='bar')
image=models.FileField(upload_to=get_file_path, null=False, blank=False)