简体   繁体   English

在 Django 中使用 pk 从 UpdateView 到 DetailView 的 success_url

[英]success_url from UpdateView to DetailView with pk in django

I make my own group permission page self with ListView to show Django Group list with a link to DetailView with pk and then give the change link to change the permissions with UpdateView.我使用 ListView 创建自己的组权限页面,以显示带有 PK DetailView 链接的 Django 组列表,然后提供更改链接以使用 UpdateView 更改权限。

I want to make the success_url of UpdateView to DetailView with pk, how to do this.我想用pk把UpdateView的success_url变成DetailView,怎么做。

my code like:我的代码像:

views.py视图.py

class GroupCreation(PermissionRequiredMixin, CreateView):
    permission_required = 'add_group'
    model = Group
    form_class = GroupCreateModelForm
    success_url = reverse_lazy('account:group_list')
    template_name = 'accounts/groups/group_creation.html'


class GroupsListView(PermissionRequiredMixin, ListView):
    permission_required = 'view_group'
    allow_empty = True
    model = Group
    ordering = 'name'
    template_name = 'accounts/groups/groups_list.html'
    form = GroupCreateModelForm
    extra_context = {'form': form, }


class GroupDetailView(PermissionRequiredMixin, DetailView):
    permission_required = 'view_group'
    model = Group
    template_name = 'accounts/groups/group_detail.html'


class GroupUpdateView(PermissionRequiredMixin, UpdateView):
    permission_required = 'change_group'
    model = Group
    fields = ('permissions',)
    template_name = 'accounts/groups/group_update.html'
    success_url = reverse_lazy('account:group_detail')

urls.py网址.py

path('groups/', views.GroupsListView.as_view(), name='group_list'),
path('groups/<int:pk>/', views.GroupDetailView.as_view(), name='group_detail'),
path('groups/<int:pk>/change/', views.GroupUpdateView.as_view(), name='group_change'),
path('groups/create/', views.GroupCreation.as_view(), name='group_creation'),

You can use the get_success_url method in your UpdateView instead of success_url attribute;您可以使用get_success_url在方法UpdateView代替success_url属性; This way you can access the edited object's pk :这样您就可以访问编辑对象的pk

def get_success_url(self):
        return reverse_lazy('account:group_detail', kwargs={'pk': self.object.pk})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM