Django使用Json对象和数组发送图像

时间:2019-06-20 09:51:45

标签: django postman

我有这个观点:

class CommitmentList(generics.ListCreateAPIView):

 permission_classes = (permissions.IsAuthenticated,)
    serializer_class = CommitmentSerializer
....

和此序列化器:

class CommitmentSerializer(serializers.ModelSerializer):
    commitment = serializers.ListField(child=serializers.DictField(),
                                       write_only=True)

    class Meta:
        model = Commitment
        fields = ....

我的模特:

class Commitment(models.Model):
    signature = models.ImageField(upload_to='signatures/')
    dealer = models.ForeignKey(User,
                               on_delete=models.CASCADE,
                               related_name='dealer_commitment')
    grower = models.ForeignKey(User,
                               on_delete=models.CASCADE,
                               related_name='grower_commitment')
    is_original = models.BooleanField(default=True)

在json中看起来像:

{
    "dealer": "123",
    "grower": "321",
     "signature": IMAGE HERE
    "commitment": [
        {
        "brand": 3,
        "is_original": true,
        "commitment_unit": 300
      }              
    ]
}

在邮递员中,我尝试发送这样的数据(用于测试)

enter image description here

但是在邮递员中我有一个错误:

{
    "dealer": [
        "This field is required."
    ],
    "grower": [
        "This field is required."
    ],
    "commitment": [
        "This field is required."
    ]
}

然后我尝试在视图中添加parser_classes = (MultiPartParser, ),它看起来像:

class CommitmentList(generics.ListCreateAPIView):
 permission_classes = (permissions.IsAuthenticated,)
    serializer_class = CommitmentSerializer
        parser_classes = (MultiPartParser, )

但是现在在邮递员中我遇到了一个错误: A server error occurred. Please contact the administrator.

在Django项目中,有一个错误:

AttributeError: 'NoneType' object has no attribute 'decode'

我如何发送这样的数据?:

{
    "dealer": "123",
    "grower": "321",
     "signature": IMAGE HERE
    "commitment": [
        {
        "brand": 3,
        "is_original": true,
        "commitment_unit": 300
      }              
    ]
}

0 个答案:

没有答案