Джанго выполняет пользовательскую функцию из Admin - PullRequest
0 голосов
/ 14 мая 2018

Я новичок в Django и прошел первое учебное пособие по Django . Я понимаю отдельные биты, но не могу сформировать полное решение.

Мое требование - добавить пользовательскую кнопку на страницу списка изменений модели в Admin, перенаправить ее на страницу подтверждения, выполнить функцию при подтверждении, а затем перенаправить на страницу списка изменений со статусом выполнения.

Я добавил пользовательскую кнопку, но после этого теряюсь. В настоящее время это то, что я делаю:

Изменен шаблон списка классов администратора

class ReconciliationAdmin(admin.ModelAdmin):
    change_list_template = 'SalesReconciliation/change_list.html'

Это мой шаблон списка изменений:

{% extends "admin/change_list.html" %}
{% load i18n admin_static %}

{% block object-tools-items %}
{{ block.super }}
<li>
    <a href={% url 'admin:reconcileConfirm'%} class="btn btn-high btn-success">Run Reconciliation</a>
</li>
{% endblock %}

Изменено urls.py в основном приложении следующим образом:

urlpatterns = [
    url(r"^reconcileConfirm/", include("SalesReconciliation.urls")),
]

Изменено urls.py в дочернем приложении следующим образом:

urlpatterns = [
    url(r'^reconcileConfirm/', views.ReconcileConfirm, name='ReconcileConfirm')
]

В views.py дочернего приложения добавлено следующее:

def ReconcileConfirm(request):
    return HttpResponse("..something")

Я надеюсь, что это будет работать как:

Нажмите на ссылку Выполнить согласование -> Основные маршруты urls.py к ребенку. urls.py -> дочерний urls.py направляет в views.py -> функцию в представлениях py выполняет некоторые операции

Но я получаю следующие ошибки:

NoReverseMatch по адресу / SalesReconciliation / выверки / обратного для «reconcileConfirm» не найден. 'reconcileConfirm' не является допустимой функцией представления или именем шаблона.

Способ запроса: GET

URL запроса: http://127.0.0.1:8000/SalesReconciliation/reconciliation/

Django Версия: 2.0.4

Тип исключения: NoReverseMatch

Значение исключения: обратное значение для "conconcileConfirm "не найдено.

'reconcileConfirm' не является допустимой функцией представления или именем шаблона.

Также я хотел бы знать, правильный ли это подход.

1 Ответ

0 голосов
/ 15 мая 2018

В вашем шаблоне:

{% url 'admin:reconcileConfirm'%}

в urls.py:

urlpatterns = [
    url(r'^reconcileConfirm/', views.ReconcileConfirm, name='ReconcileConfirm')
]

Обратите внимание, что ReconcileConfirm отличается от reconcileConfirm. Вероятно, это первая ошибка, которую нужно исправить, чтобы добиться того, чего вы хотите.

...