Добавить новый элемент в админке Django, затем перенаправить на другую страницу - PullRequest
0 голосов
/ 22 июня 2019

Я хочу добавить ссылку из пользовательского шаблона, которая идет на страницу добавления администратора Django:

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

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

Еще одна вещь, которую я пробовал, возиться с шаблоном администратора под названием submit_line.html и admin_modify.py templatetag.

<a href="/admin/core/{{ indicator_key }}/add/?_is_popup=1" target="popup"
onclick="window.open('/admin/core/{{ key }}/add/?_is_popup=1',
'popup','width=600,height=800'); return false;"></a>

1 Ответ

0 голосов
/ 26 июня 2019

Ну, я решил после более глубокого изучения исходного кода Django:

template.html

<a href="#" target="popup"
onclick="window.open('/admin/<app>/<model>/add/?_popup=1&hospital={{ hospital.id }}',
'popup','width=600,height=800'); return false;"></a>

В этом случае он откроется как всплывающее окно и автоматически доставит hospital, заполненный их идентификатором.

template.js

function dismissChangeRelatedObjectPopup(window, value, obj, new_obj) {
    window.close();
    location.reload(); 
}
function dismissDeleteRelatedObjectPopup(window, value) {
    window.close();
    location.reload(); 
}
function dismissAddRelatedObjectPopup(window, value, obj) {
    window.close();
    location.reload(); 
}

Этот javascript добавляется в зависимости от ваших потребностей, это то, что произойдет после сохранения модели во всплывающем окне. В моем случае я использовал только функцию добавления, и поскольку мне нужно было перезагрузить страницу, чтобы обновить некоторые графики, я сделал это с помощью location.reload();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...