在我在Django 1.11.5中创建的应用程序中,我使用ClassBased或Generic视图创建了更新,创建和删除功能,但是我在将用户重定向到正确的动态页面时遇到了问题。在用户打开特定产品的详细信息页面的情况下,当用户更新产品信息时,我希望应用程序将用户重定向回更新的页面。到目前为止,我已经通过指定一个特定的id来使用args实现了这一点,该id严格地重定向到指定的页面但不是动态的。
任何有关该主题的帮助或协助都将受到严格限制。
views.py
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.core.urlresolvers import reverse_lazy
from django.core.urlresolvers import reverse
class CommentUpdate(UpdateView):
model = Comment
fields = ['comment_body']
def get_success_url(self):
return reverse('detail', args=(2,)) #how to make this part dynamic
详细视图示例。
class DetailsView(generic.DetailView):
model = Product
template_name = 'details.html'
urls.py (以防万一)
url(r'^(?P<pk>[0-9]+)/$', views.DetailsView.as_view(), name="detail"),
url(r'review/(?P<pk>[0-9]+)/$',views.CommentUpdate.as_view(), name="comment-update"),
答案 0 :(得分:1)
您可以根据当前Product
动态选择正确的Comment
ID,您应该可以通过self.object
在DetailView
中引用该ID。假设product
是相应ForeignKey
的名称,您可以执行以下操作:
def get_success_url(self):
return reverse('detail', args=(self.object.product_id,))
来自docs:
在执行此视图时, self.object 将包含视图正在操作的对象。