Assign User/Groups to Container Page”翻译成中文为“将用户/组分配到容器页面”,可以使用以下代码实现该功能:
from django.contrib.auth.models import Group, User
from django.shortcuts import render
from django.views.generic.edit import FormView
from django.views.generic.list import ListView
from django.views.generic.detail import DetailView
from .forms import AssignUsersToContainerPageForm
from .models import ContainerPage
class AssignUsersToContainerPageView(FormView, ListView, DetailView):
template_name = 'assign_users_to_container_page.html'
form_class = AssignUsersToContainerPageForm
success_url = '/container_pages/'
def get_context_data(self, **kwargs):
container_page = ContainerPage.objects.get(pk=self.kwargs['pk'])
users = User.objects.all()
groups = Group.objects.all()
context = super().get_context_data(**kwargs)
context.update({
'container_page': container_page,
'users': users,
'groups': groups,
})
return context
def get_queryset(self):
container_page = ContainerPage.objects.get(pk=self.kwargs['pk'])
return container_page.users.all()
def form_valid(self, form):
container_page = ContainerPage.objects.get(pk=self.kwargs['pk'])
users = User.objects.filter(pk__in=form.cleaned_data['users'])
groups = Group.objects.filter(pk__in=form.cleaned_data['groups'])
container_page.users.set(users)
for group in groups:
container_page.groups.add(group)
return super().form_valid(form)
这段代码中,首先通过导入需要的模块和函数,引入了表单 AssignUsersToContainerPageForm
和模型 ContainerPage
。然后创建视图类 AssignUsersToContainerPageView
,集成了三个类:FormView
,ListView
和DetailView
,用于展示容器页面、显示用户列表和显示组列表。其中,FormView
用于处理表单提交,ListView
用于显示用户列表,DetailView
用于展示容器