Как убрать атрибут "multiple" из поля выбора формы django_filters?
Я пытаюсь создать форму фильтра для таблицы, используя django-filter. У меня работает фильтр для нужных мне полей, однако для двух полей ManyToMany в моей модели django_filters создает поле select с атрибутом multiple, мне не нужен этот атрибут multiple, как я могу его удалить?
Вот моя модель (частичная)
class Employee(models.Model):
...
...
abilities = models.ManyToManyField("capa.CapaType" blank=True)
responsibilities = models.ManyToManyField(Responsibilities, blank=True
...
...
Class Responsibilities(models.Model):
...
title = models.CharField(max_length=30)
description = models.CharField(max_length=256)
...
capa.CapaType похож на роли, только в другом месте проекта
filter.py
import django_filters
from .models import Employee
class EmployeeFilter(django_filters.FilterSet):
class Meta:
model = Employee
fields = ('abilities',
'responsibilities')
From what I have read on various other stack overflow questions such as this Django_filters Widget Customize, I should be able to set the widget style in filter. py, but when I tried something similar to the following in the EmployeeFilter class; responsibilities = django_filters.MultipleChoiceFilter(choices=Employee.responsibilities.all(), widget=forms.Select(attrs={'class': 'form-control'}))
Я получаю эту ошибку в консоли сервера;
AttributeError: 'ManyToManyDescriptor' object has no attribute 'all'
Удаление "all()" дает мне эту ошибку, когда я пытаюсь загрузить страницу
'ManyToManyDescriptor' object is not iterable
Есть идеи, как я могу сделать эти поля не множественными?
Спасибо
Перед тем, как получить доступ к обязанностям, необходимо получить конкретного сотрудника, например:
responsibilities = django_filters.MultipleChoiceFilter(choices=Employee.objects.get(pk=1).responsibilities.all(), widget=forms.Select(attrs={'class': 'form-control'}))
Но это бесполезно, вы можете написать так:
responsibilities = django_filters.MultipleChoiceFilter(choices=Responsibilities.objects.all(), widget=forms.Select(attrs={'class': 'form-control'}))
Вместо Responsibilities.objects.all()
вы можете фильтровать набор запросов.