我在数据库中有几个对象。使用通用视图编辑对象的URL看起来像site.com/cases/edit/123/
,其中123
是特定对象的id。考虑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
。
问候
CHRISS
答案 0 :(得分: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)
答案 1 :(得分:0)
答案 2 :(得分:0)
post_save_redirect可能包含字典字符串格式,它将根据对象的字段属性进行插值。例如,你可以使用post_save_redirect =“/ polls /%(slug)s /".