在Django管理管理后台中如何实现导入CSV

  介绍

在Django管理管理后台中如何实现导入CSV ?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

假设你需要允许在英雄管理页面上导入CSV数据。为此,您需要添加一个指向更改英雄列表页面的链接,点击这个链接会跳转到上传页面。你需要编写一个处理后请求的方法,来从CSV文件中获取数据对象:

类CsvImportForm (forms.Form):
  csv_file=forms.FileField ()
  @admin.register(英雄)
  类HeroAdmin (admin。ModelAdmin ExportCsvMixin):
  …
  change_list_template=笆堤?heroes_changelist.html"
  def get_urls(自我):
  url=super () .get_urls ()
  my_urls=[
  …
  路径(& # 39;import-csv/& # 39;, self.import_csv),
  ]
  返回my_urls +网址
  def import_csv(自我,要求):
  如果请求。方法==癙OST":
  csv_file=request.FILES (“csv_file")
  读者=csv.reader (csv_file)
  #创建英雄对象从传入的数据
  #……
  自我。message_user(请求时,“你的csv文件已经imported")
  返回重定向(“…“)
  形式=CsvImportForm ()
  有效载荷={}“form":形式
  返回渲染(
  请求、“admin/csv_form.html"负载
  )

然后创建模板文件实体/heroes_changelist.html,以覆盖原有的admin/change_list。html:

{% & # 39;延伸管理/change_list.html& # 39;%}   {%块对象工具%}   & lt; a href=https://www.yisu.com/zixun/眎mport-csv/眗el="外部nofollow”>导入CSV   
  {{块。超级}}   {% endblock %}

最后,创建上传页面csv_form。html:

{% & # 39;延伸管理/base.html& # 39;%}   {%块内容%}   & lt; div>   action=& lt;形式“!”方法=癙OST"enctype=岸嗖糠?form-data"比;   {{形式。as_p}}   {% csrf_token %}   & lt;按钮类型=皊ubmit"祝辞上传CSV   & lt;/form>   & lt;/div>   & lt; br/比;   {% endblock %}

修改完后,会在更改英雄后台列表页面上会有一个导入CSV的链接。

在Django管理管理后台中如何实现导入CSV”> </p> <p>点击后上传页面显示如下。</p> <p> <img src=看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

在Django管理管理后台中如何实现导入CSV