python - 如何动态更新 Django 中的模型?

标签 python django csv numpy django-models

我想用 csv 填充我的 django 模型。我用 numpy 上传 csv,然后,由于我的模型字段被称为 csv 的列标题,我想做这样的事情:

data=np.genfromtxt("file.csv", delimiter=',', dtype=None, names=True)
columns = data.dtype.names
for i in range(len(data['id'])):
    for a in range(1, len(columns)): #1 
        p=MyModel.objects.filter(columns[a]=data[i][columns[a]])
            p.save()

现在,这太麻烦了,它不起作用,因为我不能传递 columns[a] 而不是字段名称。

我什至尝试过类似MyModel._meta_fields[a]=data[i][a].

有时我有几十个甚至上百个字段:难道没有一个优雅的解决方案可以让我抽出一长串字段名称吗?

谢谢!

最佳答案

如果您尝试从每一行数据创建模型的新实例,请使用 setattr 函数设置值:

data=np.genfromtxt("file.csv", delimiter=',', dtype=None, names=True)
columns = data.dtype.names
for i in range(len(data['id'])):
    p = MyModel()
    for a in range(1, len(columns)): #1
        if hasattr(p, columns[a]):
            setattr(p, columns[a], data[i][columns[a]])
        else:
            raise AttributeError("'MyModel' object has no attribute '{0}'".format(columns[a]))
    p.save()

关于python - 如何动态更新 Django 中的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22670391/

相关文章:

python - 无效的 http_host header

html - 图像拒绝覆盖 div 中的另一个图像

python - 如何使用 Django 模型/数据库实现队列?

python - 导出应用程序引擎数据时如何排除列

python - 循环访问多个 CSV 文件并生成多个输出

php - 逗号分隔文件,附加加密章程而不是换行

python - 如何将字符串与 Django 中的数据库字段匹配?

python - 在 mongodb 中存储/使用文档管理系统的标签

python - 我正在尝试创建一个discord.py赠品命令

python - 如何使用 django 正确显示用户生成的图像?