我想用 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/