Как сериализовать модель django и сохранить новые строки?
Я пытаюсь сериализовать модель django для хранения всех сделанных изменений. Мне нужно преобразовать некоторые значения в строку, чтобы избежать ошибок.
Вот что у меня есть на данный момент:
associated_objects = {"parts":{}}
for item_part in item_parts:
part = Part.objects.get(id=item_part.part.id)
part_name = part.part_name
part = part.__dict__
keys_values = part.items()
part = {key: str(value) for key, value in keys_values}
part = json.dumps(part, indent=4)
associated_objects['parts'][f'{part_name}'] = part
record = Record.objects.create(associated_objects=associated_objects)
record.save()
Это сохраняет в модель с именем record, которая имеет TextField() с именем associated_objects. Мне нужно преобразовать значения в строку, чтобы избежать ошибок, вызванных объектами ImageField() в модели детали.
Вот что я получил в итоге:
{'parts': {'battery': '{\n "id": "37",\n "created_date": "2022-01-12 20:55:44.980636+00:00",\n "created_by_id": "1",\n "part_name": "battery",\n "part_no": "BATTERY",\n "alt_part_no": "None",\n "description": "test_description.",\n "qty": "99",\n "reorder_qty": "5",\n "cost": "45.0",\n "side": "1",\n "row": "1",\n "column": "1",\n "warranty": "None",\n "vendor_id": "4",\n "alt_vendor_id": "None",\n "category_id": "10",\n "img": "images/parts/battery.jpg",\n "barcode": "barcodes/parts/BATTERY_barcode.jpeg",\n "updated_date": "2022-01-13 18:42:30.818788+00:00",\n "updated_by_id": "1",\n }'}}
К сожалению, он превращает словарь в строку, поэтому \n игнорируются.
Что мне нужно:
{'parts':
{'battery':
{
"id": "37",
"created_date": "2022-01-12 20:55:44.980636+00:00",
"created_by_id": "1",
"part_name": "battery",
...
}
}
}