0

我在数据库中有几个对象。使用通用视图编辑对象的 URL 看起来像特定对象的 id 在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_redirectto 指向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 获取。

问候
克里斯

4

3 回答 3

1

简而言之,您需要做的是包装 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)
于 2009-01-24T21:52:17.893 回答
0

首先,阅读反向功能。

其次,阅读{% url %}标签。

reverse在视图中使用该函数来生成预期的重定向位置。

此外,您应该{% url %}在模板中使用标签。

于 2009-01-23T21:05:47.690 回答
0

直接来自文档: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/"。

于 2011-07-26T20:42:27.460 回答