Помогите найти ошибку. Форма с нескольким выбором к одному полю + возможность удаления выбранного
Есть таблица разрешений
edit_user = 'edit_user'
view_all = 'view_all'
create_user = 'create_user'
delete_user = 'delete_user'
add_user = 'add_user'
permissions_choice = [
(edit_user, 'Can edit user '),
(view_all, 'Can view all'),
(create_user, 'Can create user'),
(delete_user, 'Can delete user'),
(add_user, 'Can add user'),
]
Имеется модель.
class Perm(models.Model):
user_perm = models.ForeignKey(User, on_delete=models.CASCADE, null=True,
blank=True, related_name='user_perm')
choices_perm = models.CharField(max_length=150, choices=permissions_choice, null=True,)
def __str__(self):
return f"{self.user_perm} {self.choices_perm}"
class Meta:
unique_together = ['user_perm', 'choices_perm']
verbose_name_plural = 'Разрешения'
verbose_name = 'Разрешение'
Форма
class PermForm(forms.ModelForm):
choices_perm = forms.MultipleChoiceField(
required=False,
widget=forms.CheckboxSelectMultiple,
choices=permissions_choice)
class Meta:
model = Perm
fields = "__all__"
Views.py
def add_user_perm(request):
user_permissions = Perm.objects.filter(choices_perm='choices_perm').delete
if request.method == "POST":
form = PermForm(request.POST)
try:
if form.is_valid():
perm = form.save(commit=False)
perm.save()
messages.info(request, ttrans("PermissionsDodano"))
return redirect('permissions:add_user_perm')
if request.POST.get('delete'):
user_permissions.delete()
messages.info(request, ttrans("AdresUsunietoPomyslnie"))
return redirect('account:info_company')
else:
messages.info(request, ttrans("PermissionsDontSaved"))
return redirect("permissions:add_user_perm")
except Exception as e:
messages.info(request, str(e))
else:
form = PermForm()
context = {
'breadcrumb': [
{'url': reverse('permissions:add_user_perm'), 'title': ttrans("Dodać uchwały ")},
],
'form': form,
"choices": permissions_choice,
}
return render(request, 'permissions/add_user_perm.html', context)
и HTML
<div class="card">
<div class="card-content">
<h6>Add perm</h6>
<form method='post'>
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Save</button>
<button type="submit" name="delete" class="waves-effect waves-light btn red-button white-text">Delete</button>
</form>
</div>
Я хотел сделать форму множественного выбора.Что бы одному человеку можно было присвоить сразу много разрешений. А не тыкать по одному.+ Реализовать удаление выбранного. С удалением тоже не получилось. Возможно это чекбокс в html ? Но я не знаю как его использовать с django
