Tastypie: Указанный формат не имеет доступного метода десериализации

<

Resources.py

class MultipartResource(object):
def deserialize(self, request, data, format=None):
    try:
        if not format:
            format = request.META.get('CONTENT_TYPE', 'application/x-www-form-urlencoded')
        if format == 'application/x-www-form-urlencoded':
            return request.POST
        if 'multipart' in format:
            data = request.POST.copy()
            data.update(request.FILES)
            zip = TestZipModel()
            zip.ADB = request.FILES['ADB']
            jsonData = request.body.decode('utf-8')
            body_data = json.loads(jsonData)
            zip.save()
            return data
    except Exception as e:
        print("Error {}".format(e))
    return super(MultipartResource, self).deserialize(request, data, format)

# overriding the save method to prevent the object getting saved twice
def obj_create(self, bundle, request=None, **kwargs):
    pass

class ResponseZipRel(MultipartResource, ModelResource): class Meta: limit = 100000 queryset = TestZipModel.objects.all() имя_ресурса = "ziprel" авторизация = Авторизация()

Raspberry Pi, который отправляет файлы

def sendLogs():
    url = "http://43.197.102.4:8000/api/ziprel/"
    payload = {"param_1": "value_1","param_2": "value_2"}
    files = {
        'json': (None,json.dumps(payload),'application/json'),
        'ADB': (open('/home/pi/Desktop/ADB.zip','rb'),'application/zip')}
    r = requests.post(url,files=files)
    
if __name__ == "__main__":
    sendLogs()

Я получаю:

{'error_message': "The format indicated 'multipart/form-data' had no available deserialization method. Please check your ``formats`` and ``content_types`` on your Serializer.",

Я пробовал устанавливать файлы в application/zip и application/octet-stream, но безуспешно.

Я также попробовал отправить JSON в качестве параметра в запросе, вот так:

r = requests.post(url,files=files, json={"testName": "test1", "testType": "thistestname"})

и получил:

Error 'utf-8' codec can't decode byte 0xdc in position 146: invalid continuation byte

Вернуться на верх