как передать идентификатор из URL в post_save_redirect в urls.py - PullRequest
0 голосов
/ 23 января 2009

У меня есть несколько объектов в базе данных. URL для редактирования объекта с использованием общего вида выглядит как site.com/cases/edit/123/, где 123 - это идентификатор конкретного объекта. Рассмотрим содержание cases/url.py:

url(r'edit/(?P<object_id>\d{1,5})/$', update_object, { ... 'post_save_redirect': ???}, name = 'cases_edit'),

, где update_object - общий вид. Как построить post_save_redirect, чтобы указать на site.com/cases/edit/123/. Моя проблема в том, что я не знаю, как передать id объекта в функцию перенаправления. Я пробовал что-то вроде:

'post_save_redirect': 'edit/(?P<object_id>\d{1,5})/'
'post_save_redirect': 'edit/' + str(object_id) + '/'

но, очевидно, ни одна из этих работ. reverse функция была предложена, но как передать конкретный id?

'post_save_redirect': reverse('cases_edit', kwargs = {'object_id': ???})

{% url %} в храме также требует прохождения id конкретного объекта. id может быть передано через extra_context:

extra_context = {'object_id': ???}

Во всех случаях проблема заключается в получении object_id из URL.

привет
Chriss

Ответы [ 3 ]

1 голос
/ 25 января 2009

Короче говоря, вам нужно обернуть функцию update_object.

def update_object_wrapper(request, object_id, *args, **kwargs):
    redirect_to = reverse('your object edit url name', object_id)
    return update_object(request, object_id, post_save_redirect=redirect_to, *args, **kwargs)
0 голосов
/ 27 июля 2011

Справа от документов по адресу: https://docs.djangoproject.com/en/dev/ref/generic-views/#django-views-generic-create-update-create-object

post_save_redirect может содержать форматирование строки словаря, которое будет интерполироваться по атрибутам поля объекта. Например, вы можете использовать post_save_redirect = "/ polls /% (slug) s /".

0 голосов
/ 24 января 2009

Сначала прочитайте о функции реверс .

Во-вторых, прочитайте тег {% url %}.

Вы используете функцию reverse в представлении для генерации ожидаемого места перенаправления.

Кроме того, вы должны использовать тег {% url %} в своих шаблонах.

...