<p>在此,解决方案如下:</p>
<pre><code>class SomeModelForm(forms.Form):
csv_file = forms.FileField(required=False, label="please select a file")
class SomeModel(admin.ModelAdmin):
change_list_template = 'admin/my_app/somemodel/change_list.html'
def get_urls(self):
urls = super().get_urls()
my_urls = patterns("",
url(r"^upload_csv/$", self.upload_csv, name='upload_csv')
)
return my_urls + urls
urls = property(get_urls)
def changelist_view(self, *args, **kwargs):
view = super().changelist_view(*args, **kwargs)
view.context_data['submit_csv_form'] = SomeModelForm
return view
def upload_csv(self, request):
if request.method == 'POST':
form = MineDifficultyResourceForm(request.POST, request.FILES)
if form.is_valid():
# process form
</code></pre>
<p>在模板被重写的情况下:</p>
^{pr2}$
<p>表单需要一些自定义验证,但这解决了定制管理页面的困难部分。在</p>
<p>要详细说明这是怎么回事:</p>
<ol>
<li><p>get_url被重写,这样就可以在管理页面中添加一个额外的端点,这个端点可以指向任何视图,在本例中,它指向upload\u csv</p></li>
<li><p>将重写changelist_视图以将表单信息附加到视图中</p></li>
<li><p>改变_列表.html模板块“object tools”被表单字段覆盖</p></li>
</ol>
<p>希望其他人也能发现这一点。在</p>