Django 1.3 - Admin - кнопка "Add Entry" - копіює поля з попереднього екземпляра моделі

Не можу знайти, як це зробити з якоїсь причини.

Якщо натиснути кнопку "Add_model Entry" на сторінці адміністратора, я хочу, щоб більшість полів були заповнені тими ж значеннями, що й користувач, введений у попередній зразок моделі, який вони створили та зберегли. (Мене не хвилює, які користувачі, лише останній (наймолодший) зберегли примірник моделі).

Випадок використання: Користувач створюватиме екземпляри цієї моделі в пакетному режимі, наприклад, 10 дуже схожих елементів, тому було б дуже корисно, якщо більшість інформації буде заповнено кожного разу, коли вони натискають кнопку "Додати запис". Вони можуть робити це 3-4 рази на день, якщо це має значення з якоїсь причини, і кожна партія матиме суттєво різні значення в полях попередньої партії, але кожен екземпляр в партії буде схожий. Звідси моя думка про заповнення останніми збереженими значеннями.

Наведений приклад:


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


партія 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). Як додати його до кнопки/сайту "Додати запис"?

0

2 Відповіді

Можна створити спеціальний ModelForm для ModelAdmin , який має функцію __init__ , яка перевірятиме, чи є примірник надано (якщо є, це означатиме, що ви редагуєте існуючий об'єкт, а не створюєте новий), а якщо ні - запит для останнього об'єкта, а потім заповнюєте початковий з значеннями, які ви видалили з цього екземпляра.

0
додано
Ні, я не думаю, що ви знайдете тут рішення типу "під ключ" - це хороший випадок використання ніші. Удачи, вирішуючи вашу проблему.
додано Автор Michael C. O'Connor, джерело
Добре - я постараюся, що наступного тижня, хоча я сподівався на батареї включені рішення - це не поширений випадок, може бути, я йду про все неправильно - новий для Django - я думав, що я просто важко знайти правильний пошук \ t Ключові слова, тому я запитав тут.
додано Автор dale, джерело

В якості другого варіанту можна також використовувати Django Admin "nofollow"> Зберегти як функціональність. Це не зовсім те, що ви шукаєте, але це дозволить користувачам перейти до попереднього запису, змінити деякі поля, а потім зберегти це як новий об'єкт, який буде близький до того ж ефекту.

0
додано