我已覆盖我的管理员change_list.html
{% extends "admin/change_list.html" %}
{% block object-tools-items %}
<li>
<a href="importcsv/" class="grp-state-focus" class="addlink">Import CSV</a>
</li>
{{ block.super }}
{% endblock %}
当我点击此导入CSV链接时,我想导入CSV并保存到我的模型。
应用程序名称拍卖。拍卖对象:
forms.py
from django import forms
import csv
from auction.models import AuctionGroup, AuctionHouse, AuctionList
class DataInput(forms.Form):
file = forms.FileField()
def save(self):
records = csv.reader(self.cleaned_data["file"])
for line in records:
house = AuctionHouse()
house.house_name = line[0]
house.auction_type = line[1]
house.auction_day = line[2]
house.volume = line[3]
house.aleado_id = line[4]
house.aleado_photo_number = line[5]
house.house_region = line[6]
house.save()
views.py
def csv_import(request):
if request.method == "POST":
form = DataInput(request.POST, request.FILES)
if form.is_valid():
form.save()
success = True
context = {"form": form, "success": success}
return render_to_response("auction/importcsv.html", context,
context_instance=RequestContext(request))
else:
form = DataInput()
context = {"form": form}
return render_to_response("auction/importcsv.html", context,
context_instance=RequestContext(request))
urls.py
urlpatterns = patterns('',
url(r'/importcsv/$', views.csv_import, name='importcsv'),
)
项目/ urls.py
urlpatterns = patterns('',
url(r'^auction/', include('auction.urls')),
url(r'^admin/', include(admin.site.urls)),
)
importcsv.html
<!DOCTYPE html>
<html>
<form enctype="multipart/form-data" method="post" action=".">
{{ form }}
</form>
</html>
但它不起作用。请帮忙。此致
答案 0 :(得分:0)
使用链接代码中的{% url %}
标记:
<a href="{% url 'importcsv' %}" class="grp-state-focus addlink">Import CSV</a>
如果您想为多个模型使用单个模板,则change_list.html
具有cl.opts
上下文变量,该变量是当前模型的Model._meta
。
因此,您可以将app_label
和model_name
传递到importcsv()
视图:
<a href="{% url 'importcsv' cl.opts.app_label cl.opts.model_name %}"
class="grp-state-focus addlink">Import CSV</a>
更改您的urls.py
:
urlpatterns = patterns('',
url(r'/importcsv/(\w+)/(\w+)/$', views.csv_import, name='importcsv'),
)
视图功能的签名:
def csv_import(request, app_label, model_name):
...