Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用外键django将数据导入sqlite数据库_Python_Django - Fatal编程技术网

Python 使用外键django将数据导入sqlite数据库

Python 使用外键django将数据导入sqlite数据库,python,django,Python,Django,我想用一个外键将学生的姓名列表导入数据库,外键是班级信息 名称列表Model.py: name = models.CharField(max_length=100) program = models.CharField(max_length=10) classGrp = models.ForeignKey('GroupInfo', on_delete=models.SET_NULL, null=True) class GroupInfo(models.Model): classGrp

我想用一个外键将学生的姓名列表导入数据库,外键是班级信息

名称列表Model.py:

name = models.CharField(max_length=100)
program = models.CharField(max_length=10)
classGrp = models.ForeignKey('GroupInfo', on_delete=models.SET_NULL, null=True)
class GroupInfo(models.Model):
    classGrp = models.CharField(max_length=10)
    day = models.CharField(max_length=15)
名称列表中的数据如下所示:

id      name            program     classGrp    

1   ABHISHEK SINGH  CE1 1
GroupInfo Model.py:

name = models.CharField(max_length=100)
program = models.CharField(max_length=10)
classGrp = models.ForeignKey('GroupInfo', on_delete=models.SET_NULL, null=True)
class GroupInfo(models.Model):
    classGrp = models.CharField(max_length=10)
    day = models.CharField(max_length=15)
groupInfo中的数据如下所示:

id      classGrp   day

1   FEP1    Tues    

2   FSP1    Wed 
当我导入名称列表数据时,例如:

id  name    program     classGrp

137 Dummy   FP      2
它不存储2,它是classGrp。当我在以下位置检查classGrp的详细信息时:classGrp在dropdownlist中显示classgr(FEP1,FSP1),而不是ID(1,2)

VIEW.PY:

def import_studName(request):
    template = "import_stud.html"

    prompt = {
        'order' : 'Kindly ensure that the order of CSV should be id, name, program, classGrp'
    }

    if request.method == "GET":
        return render(request, template, prompt)
    csv_file = request.FILES['file']

    if not csv_file.name.endswith('.csv'):
        messages.error(request, 'This is not a csv file')

    data_set = csv_file.read().decode('UTF-8')
    io_string = io.StringIO(data_set)

    next(io_string) 
    for column in csv.reader(io_string, delimiter=',', quotechar="|"):
        if column[3] != '':
                classGrp = GroupInfo.objects.get(pk = (column[3]))
        else: 
            classGrp = GroupInfo.objects.get()
        _, created = Namelist.objects.update_or_create(
            id=column[0],
            name=column[1],
            program=column[2],
            classGrp = column[3]
        )


    context = {}    
    return render(request,template, context)
这就是为什么它不导入classGrp数据的原因,它是2

如何将外键id导入数据库

错误消息:


无法分配“'2'”:“Namelist.classGrp”必须是“GroupInfo”实例。

设法解决了我自己的问题。我的错误是我没有在namelist.update\u或create中调用classgrp

以下是最新的答案:

     for column in csv.reader(io_string, delimiter=',', quotechar="|"):

    if column[3] != '':
            classGrp = GroupInfo.objects.get(pk = (column[3]))
    else: 
        classGrp = GroupInfo.objects.get()
    _, created = Namelist.objects.update_or_create(
        id=column[0],
        name=column[1],
        program=column[2],
        classGrp = GroupInfo.objects.get(pk = (column[3]))

            )

为什么是第8栏?classGrp ID在第3列中。(但不是,管理员按照您的请求显示组名这一事实并不是您的视图不导入组数据的原因。)哦,我有其他属性,并且没有相应地更改。它应该是id 4。那么我可以知道它没有导入组数据是什么问题吗?@Puteri您在哪里将GroupInfo实例(
classGrp
,在您的代码片段中)传递到
名称列表。update\u或\u create
调用?我已经编辑了我的代码。classGrp=列[4]。错误是“无法分配”'2':“Namelist.classGrp”必须是“GroupInfo”实例