Отправка данных CSV-файла в таблицу sqlite в django - PullRequest
0 голосов
/ 17 февраля 2020

Model.py

class Tag(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=255, unique=True)

    def __str__(self):
        return self.name


class Question(models.Model):
    name = models.CharField(max_length=255, unique=True)
    Tag_name = models.ManyToManyField(Tag)

Мне нужно создать API для включения данных из CSV в таблицы.

1 Ответ

0 голосов
/ 18 февраля 2020

Все зависит от вашего формата CSV. Поскольку в вашей модели есть поле «многие ко многим», вы должны определить CSV таким образом, чтобы вы могли добавить столько «много ко многим полям», сколько захотите. Предположим, что ваш CSV имеет следующий формат.

name        | type
Question 1  | question
Tag 11      | tag
Tag 12      | tag
Tag 13      | tag
Question 2  | question
Tag 21      | tag
Tag 22      | tag
Tag 23      | tag
Tag 24      | tag

Для этого типа формата вы можете написать свой код следующим образом

csv_rows = # write code to get CSV rows here
q_obj = None
for row in csv_rows:
    if row[1] == 'question':
       q_obj = Question.objects.create(name=row[0])
    elif row[1] == 'tag':
       if q_obj:
          tag_obj = Tag.objects.create(name=row[0])
          q_obj.Tag_name.add(tag_obj)

Этот формат и код будет обрабатывать любое количество тегов для вопрос

...