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

Просто интересно, есть ли простой способ добавить функцию дублирования существующего списка в интерфейсе администратора?

При вводе данных мы столкнулись с ситуацией, когда многие элементы обмениваются общими данными с другим элементом, и для экономии времени было бы очень удобно быстро продублировать существующий список и изменить только измененные данные. Использование более совершенной структуры модели могло бы стать одним из способов уменьшения дублирования данных, но может возникнуть ситуация, когда дублированные данные необходимо будет изменить в будущем на индивидуальной основе.

Ответы [ 2 ]

97 голосов
/ 08 октября 2008

Вы можете сохранить как , просто включив его в ModelAdmin:

save_as = True

Это заменяет кнопку «Сохранить и добавить еще» на кнопку «Сохранить как». «Сохранить как» означает, что объект будет сохранен как новый объект (с новым идентификатором) вместо старого объекта.

4 голосов
/ 10 апреля 2018

Здесь есть лучшее (но не встроенное) решение:

https://github.com/RealGeeks/django-modelclone

От их README:

Django Admin имеет функцию save_as, которая добавляет новую кнопку к вашему Измените страницу, чтобы сохранить новый экземпляр этого объекта.

Мне не нравится, как работает эта функция, потому что вы сохраните идентичная копия исходного объекта (если вы не получили подтверждение ошибки), как только вы нажмете эту ссылку, и если вы забудете сделать небольшие изменения, которые вы хотели в новом объекте, вы получите дубликат существующего объекта.

С другой стороны, django-modelclone предлагает промежуточное представление, которое в основном предварительно заполняет форму для вас. Таким образом, вы можете изменить, а затем сохранить новый экземпляр. Или просто уйти без побочных эффектов.

...