Django 1.3 - Admin - кнопка «Добавить запись» - скопировать поля из предыдущего экземпляра модели - PullRequest
0 голосов
/ 27 октября 2011

Почему-то не могу найти, как это сделать.

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

Вариант использования: пользователь будет создавать экземпляры этой модели в пакетном режиме, например, 10 очень похожих элементов, поэтому было бы очень полезно, чтобы большая часть информации заполнялась каждый раз при нажатии кнопки «Добавить запись». Они могут делать это 3-4 раза в день, если это имеет значение по какой-то причине, и каждая партия будет иметь значительно отличающиеся значения в полях от предыдущей партии, но каждый экземпляр в пакете будет аналогичным. Отсюда моя мысль о предварительном заполнении самыми последними сохраненными значениями.

Придуманный пример:


class person:<br>
    name= CharField       =>   (obvious)<br>
    interests= CharField  =>   Example (fly, skate, swim)<br>
    age_range= CharField  =>   Example (old, middle, young)<br>


партия 1 = люди, которые летают и являются старыми

Jim Smith, Fly, Old
Sara Smith, Fly, Old
Larry Jones, Fly, Old


партия 2 = фигуристы

Sam Samuelson, Skate, Young
Alfred Bob, Skate, Old
Jon Jon, Skate, Old

В каждой партии много общего, но партии могут быть очень разными. Так что, я думаю, мне нужна копия ранее сохраненной модели с новым идентификатором (здесь нет наследования, с которым приходится иметь дело, но есть ForeignKeys). Как добавить его на кнопку / сайт «Добавить запись»?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2011

В качестве второго варианта вы также можете использовать функциональность Django Admin Сохранить как .Это не совсем то, что вы ищете, но это позволит пользователям перейти к предыдущей записи, отредактировать некоторые поля, а затем сохранить это как новый объект, который будет близок к тому же эффекту.

0 голосов
/ 28 октября 2011

Вы можете создать пользовательский ModelForm для вашего ModelAdmin с функцией __init__, который будет проверять, есть ли предоставленный instance (если есть, это будет означать, что вы редактируете существующий объект, а не создание нового), и, если нет, запросите последний объект, а затем заполните initial dict значениями, которые вы извлекли из этого экземпляра.

...