相关疑难解决方法(0)

多文件上传DRF

我有一个要求,我希望允许在同一发布请求中上传多个文件以创建对象。我目前有一种方法可以执行此操作,但是在查看其他一些示例后,这似乎并不是想要的方法。

models.py

class Analyzer(models.Model):
    name = models.CharField(max_length=100, editable=False, unique=True)

class Atomic(models.Model):
    name = models.CharField(max_length=20, unique=True)

class Submission(models.Model):
    class Meta:
        ordering = ['-updated_at']

    issued_at = models.DateTimeField(auto_now_add=True, editable=False)
    completed = models.BooleanField(default=False)
    analyzers = models.ManyToManyField(Analyzer, related_name='submissions')
    atomic = models.ForeignKey(Atomic, verbose_name='Atomic datatype', related_name='submission', on_delete=models.CASCADE)

class BinaryFile(models.Model):
    class Meta:
        verbose_name = 'Binary file'
        verbose_name_plural = 'Binary files'
    def __str__(self):
        return self.file.name

    submission = models.ForeignKey(Submission, on_delete=models.CASCADE, related_name='binary_files')
    file = models.FileField(upload_to='uploads/binary/')
Run Code Online (Sandbox Code Playgroud)

serializers.py

class BinaryFileSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.BinaryFile
        fields = '__all__'

class SubmissionCreateSerializer(serializers.ModelSerializer):
    class Meta:
        model …
Run Code Online (Sandbox Code Playgroud)

python django validation upload django-rest-framework

9
推荐指数
1
解决办法
857
查看次数

在 Django REST Framework 中使用 multipart/form-data 上传多个图像和嵌套 json

我在解析视图集中的request.data时遇到问题。我有一个模型,可以根据产品添加多个图像。

我想从传入数据中分离图像,将产品数据发送到 ProductSerializer,然后将图像与产品数据一起发送到其序列化器并保存。

我有两个模型,就像这样:

def Product(models.Model):
    name = models.CharField(max_length=20)
    color = models.ForeignKey(Color, on_delete=models.CASCADE)

def Color(models.Model):
    name = models.CharField(max_length=15)

def ProductImage(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    image = models.ImageField(upload_to='product_pics/')
Run Code Online (Sandbox Code Playgroud)

我想发送到产品(127.0.0.1:8000/products/)的请求就像:

{
    "name": "strawberry",
    "color": {
        "name": "red"
    },
    "productimage_set": [
        {"image": "<some_encode_image_data>"}
    ]
}
Run Code Online (Sandbox Code Playgroud)

序列化器没有什么特别的,只是提取标签链接,所以我没有写它。如何发送多部分/表单数据以及如何在视图集中解析它?或者解决办法是什么?

python django serialization django-rest-framework django-rest-viewsets

6
推荐指数
1
解决办法
6293
查看次数