【问题标题】:Insert data in table using csv in django在 django 中使用 csv 在表中插入数据
【发布时间】:2020-03-19 06:49:06
【问题描述】:

我是 Django 的新手,想知道一个基本的东西:

我有 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文件的结构应该是什么?

【问题讨论】:

  • 我认为使用一个 CSV 是不可能的,因为您有 ForeignKey 关系

标签: python django csv django-rest-framework django-views


【解决方案1】:

你不需要添加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

测验名称,测验猫名称

【讨论】:

    猜你喜欢
    • 2014-09-08
    • 2018-06-28
    • 2018-10-19
    • 2014-09-30
    • 2021-05-07
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多