В интерфейсе администратора Django есть способ проверить несколько элементов списка и вызвать действие для копирования содержимого поля в буфер обмена? - PullRequest
0 голосов
/ 08 января 2019

Например, если у меня была модель: StoragePosition (models.Model), которая имеет поле 'name'.

Я хотел бы войти в список моделей / изменить вид. Затем выберите несколько элементов, выберите действие «копировать имена в буфер обмена». Тогда сможете вставить в формате:

name_1
name_2
name_3

Я бы особенно хотел, чтобы он мог вставлять содержимое в таблицу Excel, каждое имя в отдельной ячейке.

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Я нашел очень простое решение для реальной проблемы, не используя никаких внешних зависимостей и никакого 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, поэтому пока не буду отмечать его как принятый ответ. Кроме того, вряд ли будет помечен как таковой, поскольку он предоставляет обходной путь к проблеме, а не ее прямое решение.

0 голосов
/ 09 января 2019

Проверка 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...