【发布时间】:2021-10-27 18:27:05
【问题描述】:
我正在尝试使用 django-filter 为表创建过滤器表单。 我的过滤器适用于我想要的字段,但是对于我的模型中的两个 ManyToMany 文件,django_filters 正在创建一个具有多个属性的选择字段,我不希望该多个属性如何删除它?
这是我的模型(部分)
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')
从我读到的其他各种堆栈溢出问题(例如 Django_filters Widget Customize)中,我应该能够在 filter.py 中设置小部件样式,但是当我在 EmployeeFilter 类中尝试类似以下内容时;
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.ModelMultipleChoiceFilter(queryset=Responsibilities.objects.all(), widget=forms.Select())
【问题讨论】:
标签: python django django-filter