Импорт через Pandas CSV в Django модель manytomanyfield

Абсолютный новичок в Django. Решил на работе разработать небольшое POC-приложение, но никак не могу разобраться с импортом csv-данных через Pandas в мою Django-модель manytomanyField. Все остальное работает, за исключением m2m-поля.

Вот часть моей модели:


class Service_Interval(models.Model):
    interval_name = models.CharField(null=True, max_length=200)

class Task(models.Model):
    service_intervals = models.ManyToManyField(Service_Interval, related_name="intervals")

Вот мой взгляд:


def Import_Excel_pandas(request):    
    if request.method == 'POST' and request.FILES['myfile']:      
        myfile = request. FILES['myfile']
        fs = FileSystemStorage()
        filename = fs.save(myfile.name, myfile)
        uploaded_file_url = fs.url(filename)              
        #exceldata = pd.read_csv(filename, index_col ="Requirements")              
        df=pd.read_csv('sheets/import_csv/'+filename, sep=',', usecols=['ID','Requirements','Service Intervals','Task Created'])
            #print(df)
        row_iter = df.iterrows() 
        objs = [
            Task(
                id = row['ID'],
                requirements = row['Requirements'],
                task_created = row['Task Created'],
                #service_intervals = row['Service Intervals'], << - dont work.                                                     
            )                                              
            for index, row in row_iter
        ]
        Task.objects.bulk_create(objs)


Вот некоторые из CSV:

введите описание изображения здесь

Я думаю, что мне нужно сначала подключиться к подключению/созданию в Service_Interval, а затем добавить в Tasks внутри цикла, но я застрял на том, как/где добавить код внутри задачи объекта и правильно ли происходит процесс. Любая помощь будет оценена по достоинству, так как я застрял на этом уже некоторое время.


                   intervals = row['Service Intervals']
                    service_intervals = ast.literal_eval(intervals)
                    service_intervals = map(str.lower, service_intervals)
                    service_intervals = list(set(service_intervals))
                    for interval_name in service_intervals:
                            service_intervals, _ =                             Service_Interval.objects.get_or_create(name=interval_name)
                            Task.service_intervals.add(service_intervals)                            

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