【问题标题】:In the Django admin interface, is there a way to check a few list items and trigger an action to copy field contents to clipboard?在 Django 管理界面中,有没有办法检查一些列表项并触发将字段内容复制到剪贴板的操作?
【发布时间】:2019-01-08 16:45:38
【问题描述】:

例如,如果我有一个模型:StoragePosition(models.Model),它有一个字段“名称”。

我想进入模型的列表/更改视图。然后选择几个项目,选择“将名称复制到剪贴板”操作。然后就可以粘贴格式了:

name_1
name_2
name_3

我特别希望它能够将内容粘贴到 Excel 电子表格中,每个名称都在自己的单元格中。

【问题讨论】:

  • 用javascript,当然。选择行并执行document.execCommand("copy");

标签: django django-admin clipboard


【解决方案1】:

我找到了一个非常简单的解决实际问题的方法,不使用外部依赖,也不使用 javascript。

我真的只是想要一个视图,其中包含我自己需要的信息,一个列在另一个之下。


在 admin.py 中:

def copy_selection_to_clipboard(modeladmin, request, queryset):
    return HttpResponse("<br>".join([str(q) for q in queryset]))


copy_selection_to_clipboard.short_description = 'Copy selection to clipboard'

在 MyModelAdmin(admin.ModelAdmin) 中:

...
    actions = (copy_selection_to_clipboard,)
...

我还没有测试@martin-stoyanov 的答案,所以暂时不会将此标记为已接受的答案。此外,不太可能被标记为这样,因为它提供了问题的解决方法,而不是直接的解决方案。

【讨论】:

    【解决方案2】:

    检查Pyperclip

    您可以通过以下方式在模型列表中定义自己的主要操作:

    import pyperclip
    def copy_selected_to_clipboard(modeladmin, request, queryset):
        #pyperclip code example
        pyperclip.copy('The text to be copied to the clipboard.')
        #or whatever logic you need.
    

    然后将其包含在您的 ModelAdmin 类中,如下所示:

    MyModelAdmin(admin.ModelAdmin):
        actions = ['copy_selected_to_clipboard', ] // <-- include list function here
    

    【讨论】:

    • 这不会复制到服务器的剪贴板吗?
    • 它应该将其复制到您当前操作系统的剪贴板,因为它是跨平台的。
    • 呃...我认为 pyperclip 不会将 python 代码转换为 JS/HTML,它会将其复制到服务器的剪贴板。
    猜你喜欢
    • 2010-09-15
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    相关资源
    最近更新 更多