Создайте действие администратора Django для дублирования записи

Я хочу создать действие администратора Django, которое позволит мне создать копию записи.

Вот случай использования.

Администратор устанавливает флажок рядом с записью в приложении, которое они хотят скопировать. Администратор выбирает "Дублировать" из выпадающего меню действий администратора. Админ клики идут. Администратор Django создает дубликат записи с новым идентификатором. Страница обновляется и добавляется новый дубликат с идентификатором. Администратор нажимает на новую, дублированную запись и редактирует ее. Администратор нажимает сохранить.

Я сумасшедший или это довольно прямолинейное действие администратора?

Я использовал эти документы для справки: http://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/

Я думаю что-то вроде этого:

В моем приложении:

def duplicate(modeladmin, request, queryset):
    new = obj.id
    queryset.create(new)
    return None
duplicate.short_description = "Duplicate selected record"

Я знаю, что это неправильно... но мое мышление близко?

2 ответа

Решение

У вас правильная идея, но вам нужно перебрать набор запросов, а затем продублировать каждый объект.

def duplicate_event(modeladmin, request, queryset):
    for object in queryset:
        object.id = None
        object.save()
duplicate_event.short_description = "Duplicate selected record"

Может быть, эта работа для вас.

def duplicate_query_sets(queryset, **kwargs):
    for p in queryset:
        p.pk = None
        for i, v in kwargs.iteritems():
            setattr(p, i, v)

        p.save()
Другие вопросы по тегам