Создание основанного на классах ListView с отправляемой формой
Я создаю ListView на основе класса, который содержит форму. Я смог добавить форму в свой шаблон, но не могу отправить форму. Отправка должна перенаправлять на исходную страницу. Вот код:
urls.py
urlpatterns = [
path('<str:uuid_group>/manage/groupmembers', ManageGroupMembersListView.as_view(), name="manage_groupmembers"),
]
forms.py
class ManageGroupMemberForm(forms.ModelForm):
class Meta:
model = AadGroupmember
fields = ['id_aaduser','id_aadpermissions']
views.py
class ManageGroupMembersListView(ListView):
model = PermissionAAD
template_name = 'permissions/group_members.html'
paginate_by = 10
def get_context_data(self, *args, **kwargs):
context = super(ManageGroupMembersListView, self).get_context_data(*args, **kwargs)
context['uuid_group'] = self.kwargs['uuid_group']
context ['object_list'] = self.model.objects.filter(Q(uuid__icontains=context['uuid_group']))
context['form'] = ManageGroupMemberForm()
return context
group_members.html
<form method="post" action="{%url 'manage_groupmembers' uuid_group%}">
{% csrf_token %}
{{form.as_p}}
<input type="submit" value="Submit">
</form>
<table class="table">
<thead>
<tr>
<th scope="col">Users</th>
<th scope="col">First Name</th>
<th scope="col">test</th>
</tr>
</thead>
<tbody>
<tr>
{% for user in object_list %}
<td>{{ user.username}}</td>
<td>{{ user.shortdesc}}</td>
<td>{{ user.groupname}}</td>
</tr>
{% endfor %}
</tbody>
</table>
Вы можете написать отдельное представление для работы с вашей формой.
#views
class CreateGroupMemberView(CreateView):
model = AadGroupmember
form_class = ManageGroupMemberForm
template_name = "permissions/group_members.html"
success_url = reverse_lazy("manage_groupmembers")
# urls
path("create/groupmembers/", CreateGroupMemberView.as_view(), name="create-group-member")
#template
<form method="post" action="{% url 'create-group-member' %}">
{% csrf_token %}
{{form.as_p}}
<input type="submit" value="Submit">
</form>