Как обрабатывать данные из редактора DataTables в Django?

Я пытаюсь обработать данные, отправленные через плагин DataTables Editor в представлении Django.

Полученный запрос.POST выглядит так:

{'action': 'edit',
 'data[3115][row1]': 'value1',
 'data[3115][row2]': 'value2',
 'data[3115][row3]': 'value3',
 'data[3115][row4]': 'value4',
 'data[3115][row5]': 'value5'}

где 3115 — первичный ключ моей модели.

Каков предполагаемый подход в представлении Django для получения значений PK и model.row1, model.row2, model.row3,... из данных POST?

Желаемый результат будет примерно таким

result = {
    'pk': 3115,
    'row1': 'value1',
    'row2': 'value2',
    'row3': 'value3',
    'row4': 'value4',
    'row5': 'value5'
}

person Community    schedule 02.08.2018    source источник
comment
Каков ваш желаемый результат?   -  person Mehrdad Pedramfar    schedule 02.08.2018
comment
Мне нужно что-то вроде: {'pk': 3115, 'row1': value1, 'row2':'value2'...}   -  person    schedule 02.08.2018


Ответы (1)


Вы можете попробовать это:

import re

a = {'action': 'edit',
     'data[3115][row1]': 'value1',
     'data[3115][row2]': 'value2',
     'data[3115][row3]': 'value3',
     'data[3115][row4]': 'value4',
     'data[3115][row5]': 'value5'}

d = {} # your desired result

for k,v in a.items():
    if k.startswith('data'):
        r = re.match('data\[(\d+)\]\[(\w+\d+)\]$', k)
        if r:
            d['pk'] = r.groups()[0]
            d[r.groups()[1]] = v

d будет:

{'pk': '3115',
 'row1': 'value1',
 'row2': 'value2',
 'row3': 'value3',
 'row4': 'value4',
 'row5': 'value5'}
person Mehrdad Pedramfar    schedule 02.08.2018