如何从 DeleteView 中的第二个模型对象引用参数以传递给我的 get_success_url?
How do I reference a parameter from a second model object inside a DeleteView to pass to my get_success_url?
我的问题是:
如何从 List 对象实例
并将其从我的 DeleteView 传递到我的 get_success_url 反向方法...
为了成功渲染get_success_url模板?
我的get_success_url是这样的:
url(r'^(?P<username>[a-zA-Z0-0_.-]+)/(?P<list_pk>\d+)/$',
views.list_detail,
name='listdetail'),
我的 DeleteView url 是:
url(r'^(?P<username>[a-zA-Z0-0_.-]+)/(?P<list_pk>\d+)/delete_item/(?P<pk>\d+)$',
views.DeleteItemView.as_view(),
name='deleteitem'),
我的 DeleteView 代码如下:
class DeleteItemView(LoggedInMixin, DeleteView):
model = Item
def get_success_url(self):
return reverse_lazy(
'lists:listdetail',
kwargs = {'username': self.request.user,
??'list_pk': self.request.user.list.id ??})
list_pk是我需要传入success_url的参数。它来自相关但独立的 List() 对象。 IE。一个列表有很多项目 - 一个项目有一个列表。
self.request.user 传递用户名参数没问题。我尝试了很多排列来捕获 list_pk 参数,但都无济于事。当前尝试被 ?? 包围??在逻辑上对我来说是有意义的,但我收到一条错误消息,指出 User 对象没有列表属性。
我是基于 class 的视图的新手,所以我确信有一个明显的解决方法,但我还没有找到它。
我的另一个尝试集中在使用 get_context_data 传递列表对象,提取我需要的特定 list_pk 然后在 success_url 中引用它,我没有但是,在此处包括该尝试,因为它没有用。
非常感谢任何帮助。谢谢。
在基于 class 的视图中,与在基于函数的视图中一样,url 参数作为关键字参数传递。要在 CBV 中访问它们,请使用 self.kwargs.get('some_parameter')
.
class DeleteItemView(LoggedInMixin, DeleteView):
model = Item
def get_success_url(self):
list_pk= self.kwargs.get('list_pk')
# I don't see why you would need a lazy inside a method...
return reverse('lists:listdetail',
kwargs = {'username': self.request.user, 'list_pk': list_pk})
我的问题是:
如何从 List 对象实例
并将其从我的 DeleteView 传递到我的 get_success_url 反向方法...
为了成功渲染get_success_url模板?
我的get_success_url是这样的:
url(r'^(?P<username>[a-zA-Z0-0_.-]+)/(?P<list_pk>\d+)/$',
views.list_detail,
name='listdetail'),
我的 DeleteView url 是:
url(r'^(?P<username>[a-zA-Z0-0_.-]+)/(?P<list_pk>\d+)/delete_item/(?P<pk>\d+)$',
views.DeleteItemView.as_view(),
name='deleteitem'),
我的 DeleteView 代码如下:
class DeleteItemView(LoggedInMixin, DeleteView):
model = Item
def get_success_url(self):
return reverse_lazy(
'lists:listdetail',
kwargs = {'username': self.request.user,
??'list_pk': self.request.user.list.id ??})
list_pk是我需要传入success_url的参数。它来自相关但独立的 List() 对象。 IE。一个列表有很多项目 - 一个项目有一个列表。
self.request.user 传递用户名参数没问题。我尝试了很多排列来捕获 list_pk 参数,但都无济于事。当前尝试被 ?? 包围??在逻辑上对我来说是有意义的,但我收到一条错误消息,指出 User 对象没有列表属性。
我是基于 class 的视图的新手,所以我确信有一个明显的解决方法,但我还没有找到它。
我的另一个尝试集中在使用 get_context_data 传递列表对象,提取我需要的特定 list_pk 然后在 success_url 中引用它,我没有但是,在此处包括该尝试,因为它没有用。
非常感谢任何帮助。谢谢。
在基于 class 的视图中,与在基于函数的视图中一样,url 参数作为关键字参数传递。要在 CBV 中访问它们,请使用 self.kwargs.get('some_parameter')
.
class DeleteItemView(LoggedInMixin, DeleteView):
model = Item
def get_success_url(self):
list_pk= self.kwargs.get('list_pk')
# I don't see why you would need a lazy inside a method...
return reverse('lists:listdetail',
kwargs = {'username': self.request.user, 'list_pk': list_pk})