【问题标题】:Open a file chooser within a django admin action在 django 管理操作中打开文件选择器
【发布时间】:2015-09-22 13:01:29
【问题描述】:

我想在 django 管理界面上创建一个操作,允许选择和打开文件,然后进行处理(保存此处理的最终结果)。我不知道如何在管理操作中执行此操作,因此我通过在与操作关联的模型上添加一个可选文件字段来解决它,但这似乎笨拙且浪费。

我将如何在点击管理员操作后提示用户选择文件?

谢谢。

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    首先创建表单

    class SelectFileForm(forms.Form):
        _selected_action = forms.CharField(widget=forms.MultipleHiddenInput)
        file = forms.FileField()
    

    将此代码添加到您的 admin.py:

    def select_file_action(modeladmin, request, queryset):
           form = None
    
           if 'apply' in request.POST:
               form = ChooseFileForm(request.POST)
    
               if form.is_valid():
                   file = form.cleaned_data['file']
    
                   count = 0
                   for item in queryset:
                       #do something with file
                       item.file = file
                       item.save()
                       count += 1
    
                   modeladmin.message_user(request, "File successfully selected")
                   return HttpResponseRedirect(request.get_full_path())
    
           if not form:
               form = SelectFileForm(initial={'_selected_action': request.POST.getlist(admin.ACTION_CHECKBOX_NAME)})
    
           return render(request, 'select_file.html', {'items': queryset,'form': form, 'title':'File'})
    
    select_file_action.short_description = "Choose file"
    

    注册您的操作

    actions = [select_file_action,]
    

    还有 select_file 模板:

    {% extends "admin/base_site.html" %}
    
    {% block content %}
    <form action="" method="post">{% csrf_token %}
        {{ form }}
    
        <ul>{{ items|unordered_list }}</ul>
        <input type="hidden" name="action" value="select_file_action" />
        <input type="submit" name="apply" value="Save" />
    </form>
    {% endblock %}
    

    【讨论】:

      猜你喜欢
      • 2010-09-24
      • 2011-05-24
      • 1970-01-01
      • 2012-05-05
      • 2023-03-13
      • 2014-06-25
      • 2011-05-28
      • 1970-01-01
      • 2014-11-12
      相关资源
      最近更新 更多