Django отправляет изображение с Json-объектом и массивами - PullRequest
0 голосов
/ 20 июня 2019

У меня есть это представление:

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)

I

inЭто выглядит так:

{
    "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
      }              
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...