Django Admin管理后台导入CSV

打印 上一主题 下一主题

主题 517|帖子 517|积分 1551

修改管理模子,代码如下:
  1. class CsvImportForm(forms.Form):
  2.     csv_file = forms.FileField()
  3. @admin.register(Hero)
  4. class HeroAdmin(admin.ModelAdmin, ExportCsvMixin):
  5.     ...
  6.     change_list_template = "entities/heroes_changelist.html"
  7.     def get_urls(self):
  8.         urls = super().get_urls()
  9.         my_urls = [
  10.             ...
  11.             path('import-csv/', self.import_csv),
  12.         ]
  13.         return my_urls + urls
  14.     def import_csv(self, request):
  15.         if request.method == "POST":
  16.             csv_file = request.FILES["csv_file"]
  17.             reader = csv.reader(csv_file)
  18.             # Create Hero objects from passed in data
  19.             # ...
  20.             self.message_user(request, "Your csv file has been imported")
  21.             return redirect("..")
  22.         form = CsvImportForm()
  23.         payload = {"form": form}
  24.         return render(
  25.             request, "admin/csv_form.html", payload
  26.         )
复制代码
创建模板文件templates/entities/heroes_changelist.html
  1. {% extends 'admin/change_list.html' %}
  2. {% block object-tools %}
  3.     <a href="import-csv/">Import CSV</a>
  4.     <br />
  5.     {{ block.super }}
  6. {% endblock %}
复制代码
创建模板文件templates/admin/csv_form.html
  1. {% extends 'admin/base.html' %}
  2. {% block content %}
  3.     <div>
  4.         <form action="." method="POST" enctype="multipart/form-data">
  5.             {{ form.as_p }}
  6.             {% csrf_token %}
  7.                 <button type="submit">Upload CSV</button>
  8.         </form>
  9.     </div>
  10.     <br />
  11. {% endblock %}
复制代码
显示效果如下:



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表