如何将csv文件添加到Django模型中

时间:2018-06-13 22:10:34

标签: python django csv

我有一个csv文件,其内容如下:

stores.csv

Site, Score, Rank
roolee.com,100,125225
piperandscoot.com,29.3,222166
calledtosurf.com,23.8,361542
cladandcloth.com,17.9,208670
neeseesdresses.com,9.6,251016
...

这是我的模特。

models.py

class SimilarStore(models.Model):
    store = models.ForeignKey(Store)
    csv = FileField()

    domain = models.CharField(max_length=100, blank=True)
    score = models.IntegerField(blank=True)
    rank = models.IntegerField(blank=True)

所以,我想将stores.csv文件上传到csv字段,以便每个列数据分别进入domainscorerank。< / p>

我发现了一些资源使python文件解析数据并通过`python parse.py'之类的命令运行它。但是,我需要通过在Django admin中上传csv文件来完成它。任何人都可以解释我是如何做到的吗?

2 个答案:

答案 0 :(得分:2)

您可以通过pandas读取csv文件,然后使用pandas funtion'infer_objects()'将其转换为您想要的对象ny。我希望下面的代码在这方面可以帮助你,

import pandas as pd
SimilarStore_df = pd.read_csv('./store.csv') #importing csv file as pandas DataFrame
SimilarStore_df.columns = ['Domain', 'Score','Rank']

SimilarStore=SimilarStore_df.infer_objects() #converting DataFrame to object

print(SimilarStore)
print(SimilarStore.columns)

输出:

               Domain  Score    Rank
0          roolee.com  100.0  125225
1   piperandscoot.com   29.3  222166
2    calledtosurf.com   23.8  361542
3    cladandcloth.com   17.9  208670
4  neeseesdresses.com    9.6  251016
Index(['Domain', 'Score', 'Rank'], dtype='object')

答案 1 :(得分:0)

只需在数据库中找到表名,也可以在表中找到相应的列名,并在pandas中使用to_sql命令