Группа пользователей не создается? - PullRequest
0 голосов
/ 20 сентября 2019

Здесь я сделал форму для получения имени группы от пользователя, а затем попытался создать имя группы с этим именем, введенным пользователем, но это не дает мне ожидаемого результата. Это не выдает никакой ошибки и не сохраняет данные вбаза данных.Когда я использовал group_name = request.POST['name'] вместо cleaned_data, он выдает:

django.utils.datastructures.MultiValueDictKeyError: 'name'

Что я здесь не так делаю?

forms.py

class AddUserGroupForm(forms.Form):
    name = forms.CharField(max_length=255)

просмотров.py

def add_user_groups(request):
    form = AddUserGroupForm()
    #group_name = request.POST['name']
    #print(group_name,'group_name')
    if form.is_valid():
        group_name = form.cleaned_data['name']
        permissions = request.POST.getlist('user_permissions')
        new_group = Group.objects.create(name=group_name)
        new_group.permissions.add(permissions)
        messages.success(request,'New group added.')
        return redirect('organization:view_groups')
    return render(request,'organization/add_user_groups.html',{'user_permissions':user_permissions,'form':form})

template

<form action="{% url 'organization:add_user_group' %}" method="post">
                    {% csrf_token %}
    <label> Group Name : </label>
       <input type="text" class="form-control required" placeholder="Enter 
            group name" name="name">
                    <label>Permissions:</label>
                    {% for permission in user_permissions %}
                        <input name="user_permissions" type="checkbox" id="permission-{{permission.id}}"
                          value="{{permission.id}}">
                        <label for="permission-{{permission.id}}"> {{permission.name}}</label>


                    </div>
                    {% endfor %}                               
<button type="submit" class="btn btn-info">Submit</button>
         </div>
</form>

1 Ответ

0 голосов
/ 20 сентября 2019

Поскольку ваши cleaned_data пусты для
form = AddUserGroupForm(), если вы хотите получить доступ к данным

do form = AddUserGroupForm(request.POST)

, чтобы данные были очищены в соответствии с запросом POST и вызовом is_valid().

Если вы хотите добавить подтверждение, добавьте его в clean метод класса формы, см. здесь

Этодолжно быть так

def add_user_groups(request):
  if request.method == 'POST':
    form = AddUserGroupForm(request.POST)
    #group_name = request.POST['name']
    #print(group_name,'group_name')
    if form.is_valid():
        group_name = form.cleaned_data['name']
        permissions = request.POST.getlist('user_permissions')
        new_group = Group.objects.create(name=group_name)
        new_group.permissions.add(permissions)
        messages.success(request,'New group added.')
        return redirect('organization:view_groups')
  else:
        #empty form for get request
        form = AddUserGroupForm()
  return render(request,'organization/add_user_groups.html',{'user_permissions':user_permissions,'form':form})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...