Создайте действие администратора 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()