Django Admin管理后台导入CSV

修改管理模型,代码如下:

python 复制代码
class CsvImportForm(forms.Form):
    csv_file = forms.FileField()
@admin.register(Hero)
class HeroAdmin(admin.ModelAdmin, ExportCsvMixin):
    ...
    change_list_template = "entities/heroes_changelist.html"
    def get_urls(self):
        urls = super().get_urls()
        my_urls = [
            ...
            path('import-csv/', self.import_csv),
        ]
        return my_urls + urls
    def import_csv(self, request):
        if request.method == "POST":
            csv_file = request.FILES["csv_file"]
            reader = csv.reader(csv_file)
            # Create Hero objects from passed in data
            # ...
            self.message_user(request, "Your csv file has been imported")
            return redirect("..")
        form = CsvImportForm()
        payload = {"form": form}
        return render(
            request, "admin/csv_form.html", payload
        )

创建模板文件templates/entities/heroes_changelist.html

python 复制代码
{% extends 'admin/change_list.html' %}
{% block object-tools %}
    <a href="import-csv/">Import CSV</a>
    <br />
    {{ block.super }}
{% endblock %}

创建模板文件templates/admin/csv_form.html

python 复制代码
{% extends 'admin/base.html' %}
{% block content %}
    <div>
        <form action="." method="POST" enctype="multipart/form-data">
            {{ form.as_p }}
            {% csrf_token %}
                <button type="submit">Upload CSV</button>
        </form>
    </div>
    <br />
{% endblock %}

显示效果如下:

相关推荐
Guheyunyi1 分钟前
视频安全监测系统的三大核心突破
大数据·运维·服务器·人工智能·安全·音视频
先知后行。9 分钟前
python的类
开发语言·python
Xの哲學11 分钟前
Linux UPnP技术深度解析: 从设计哲学到实现细节
linux·服务器·网络·算法·边缘计算
柏木乃一15 分钟前
进程(6)进程切换,Linux中的进程组织,Linux进程调度算法
linux·服务器·c++·算法·架构·操作系统
dyxal19 分钟前
Python包导入终极指南:子文件如何成功调用父目录模块
开发语言·python
Run_Teenage20 分钟前
Linux:进程等待
linux·运维·服务器
nnerddboy20 分钟前
解决传统特征波段选择的不可解释性:2. SHAP和LIME
python·机器学习
电商API&Tina21 分钟前
【电商API接口】关于电商数据采集相关行业
java·python·oracle·django·sqlite·json·php
春日见37 分钟前
眼在手上外参标定保姆级教学(vscode + opencv)
linux·运维·服务器·数码相机·opencv·ubuntu·3d
weixin_4215850140 分钟前
解释代码:val_pred = vxm_model.predict(val_input)--与tensor对比
python