У меня есть данные, которые загружаются в фрейм данных. Затем этот кадр данных необходимо сохранить в модель django. Основная проблема заключается в том, что некоторые данные, которые должны go в IntegerField
или FloatField
, являются пустыми строками ""
. С другой стороны, некоторые данные, которые должны быть сохранены в CharField
, представлены как np.nan
. Это приводит к следующим ошибкам:
ValueError: Поле 'position_lat' ожидало число, но получило nan.
Если я заменю np.nan пустой строкой, используя data[database]["df"].replace(np.nan, "", regex = True, inplace = True)
, я получаю следующую ошибку:
ValueError: Поле 'position_lat' ожидало число, но получил ''.
Так что мне бы хотелось сделать, это проверить в модели, получает ли FloatField
или IntegerField
либо np.nan
, либо пустую строку, и заменить ее пустым значением. То же самое для CharField
, который должен преобразовывать целые числа (если применимо) в строки или np.nan
в пустую строку.
Как это можно реализовать? Используя ModelManager или настраиваемые поля? Или есть подходы лучше? Сортировка CSV-файлов не возможна.
import pandas as pd
import numpy as np
from .models import Record
my_dataframe = pd.read_csv("data.csv")
record = Record
entries = []
for e in my_dataframe.T.to_dict().values():
entries.append(record(**e))
record.objects.bulk_create(entries)