【问题标题】:"This Field is Required" even though I am uploading my file“此字段为必填项”,即使我正在上传我的文件
【发布时间】:2020-10-09 19:41:30
【问题描述】:

这是我上一个问题的后续问题:Lists are currently not supported in HTML Input。我了解到 Django-Rest-Framework 可浏览 API 根本不支持列表,我正在尝试测试我使用 Postman 发布数据的能力。

我得到的错误是:我的 BreedImages 字段“此字段是必需的”,即使我正在发布它。

这里有一些图片:

这是我的模型:

class Breed(models.Model):
    name = models.CharField(max_length=150)

    def __str__(self):
          return self.name

class BreedImage(models.Model):
    breed = models.ForeignKey(Breed, related_name='BreedImages', on_delete=models.CASCADE)
    breedImage = models.ImageField(upload_to='photos', null=True, blank=True)

我的序列化器:

class ImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = BreedImage
        fields = ['id', 'breedImage']   

class BreedSerializer(serializers.ModelSerializer):
    BreedImages = ImageSerializer(many=True, allow_null=True, required=True)

    class Meta:
        model = Breed
        fields = ['name', 'BreedImages']

我的看法:

class BreedList(generics.ListCreateAPIView):
    parser_classes = (MultiPartParser,)
    queryset = Breed.objects.all()
    serializer_class = BreedSerializer
    pagination_class = None

【问题讨论】:

    标签: python django django-models file-upload django-rest-framework


    【解决方案1】:

    您想在一个请求中发送{"name": "Hello", "BreedImages": [img.png, img2.png]} 之类的数据并保存在模型中吗?

    【讨论】:

    • 我也可以一张一张地发送图片。在那种情况下,这个错误发生在我身上。
    • 因为 BreadImages 字段是带有“id”和“breedImage”键的等待列表字典,而不是列表图像。如果要使用 POST 提供列表文件,则需要将行从 BreedImages = ImageSerializer(many=True, allow_null=True, required=True) 替换为 BreedImages = serializers.ListField(source="BreedImages.breed", allow_null=True, required=True) 并使用自定义逻辑重写 def create(self, validated_data): 方法
    猜你喜欢
    • 1970-01-01
    • 2015-03-21
    • 2019-06-03
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 2021-12-14
    相关资源
    最近更新 更多