Вставьте данные в таблицу, используя CSV в django - PullRequest
1 голос
/ 19 марта 2020

Я новичок ie в Django и хотел бы знать основы c вещь:

У меня есть 2 модели:

class QuizCat(models.Model):

    cid = models.IntegerField()
    c_name = models.CharField(max_length=200)

class Quiz(models.Model):

    Qid = models.IntegerField()
    cat_id = models.ForeignKey(QuizCat, on_delete=models.CASCADE)
    name = models.CharField(max_length=200)

Я хочу вставить данные в базы данных, используя файл 1 csv, так что данные вставляются как в модель QuizCat, так и в модель Quiz. и какой должна быть структура csv файла?

1 Ответ

0 голосов
/ 19 марта 2020

Вам не нужно добавлять поле id, оно будет добавлено django по умолчанию

models.py

class QuizCat(models.Model):
    c_name = models.CharField(max_length=200)

class Quiz(models.Model):
    cat_id = models.ForeignKey(QuizCat, on_delete=models.CASCADE)
    name = models.CharField(max_length=200)

views.py

def uploadFile(request):
    try:
        csv_file = request.FILES["csv_file"]#change csv_file according to your form input name
        file_data = csv_file.read().decode("utf-8")     
        lines = file_data.split("\n")
        for line in lines:                      
            fields = line.split(",")
            fields = [i.trim() for i in fields ]
            name = fields[0]
            cat = fields[1]
            qcat,created=QuizCat.objects.get_or_create(c_name=cat)
            Quiz.objects.get_or_create(cat_id=qcat,name=name)
    except e:
        raise
    return HttpResponse("Success")

CSV

Название викторины, QuizCat name

...