django - Django-filter:错误:使用 LinkWidget 时输入值列表
问题描述
也许你们中的一个人可以用“Django-filter”帮助我。在我的模板中,当我想使用 LinkWidget 时,会显示“输入值列表”错误。当我将 LinkWidget 与 django_filters.AllValuesMultipleFilter 一起使用时,它会在我的模板中显示单词“all”和 te 字段类别的 ID
当我将它与 Django 表单小部件“widget=forms.CheckboxSelectMultiple)”一起使用时,我可以过滤数据。
我的代码有什么问题?
谢谢。
Krgds。
# file: filters.py
from portfolio.models import Project,Category,Client
import django_filters
from django_filters.widgets import LinkWidget
from django import forms
# error: Enter a list of values.
class ProjectFilter(django_filters.FilterSet):
categories = django_filters.ModelMultipleChoiceFilter(queryset=Category.objects.all(),# this a ManyToManyField
widget=django_filters.widgets.LinkWidget)
class Meta:
model = Project
fields = ['categories' ]
# shows "all" and the ID’s of te field categories
class ProjectFilter(django_filters.FilterSet):
categories = django_filters.AllValuesMultipleFilter(widget=django_filters.widgets.LinkWidget)
class Meta:
model = Project
fields = ['categories' ]
解决方案
LinkWidget 会将过滤后的结果以无序列表的形式列出,并在 html 中列出项目。IE:
<ul id="id_categories">
<li><a href="?categories=">All</a></li>
<li><a class="selected" href="?categories=1">Offices</a></li>
<li><a href="?categories=2"> Residential </a></li>
</ul>
为此,您可以使用“django_filters.filters.ModelChoiceFilter”。尽管要过滤的字段是ManyToManyField。
根据文档:
模型MultipleChoiceFilter¶
与 MultipleChoiceFilter 类似,但它适用于相关模型,默认用于 ManyToManyField。
模型选择过滤器¶
与 ChoiceFilter 类似,但它适用于相关模型,默认用于 ForeignKey。
#filters.py
class ProjectFilter(django_filters.FilterSet):
categories = django_filters.filters.ModelChoiceFilter(
required=False,
queryset=Category.objects.all(),
widget=django_filters.widgets.LinkWidget
)
class Meta:
model = Project
fields = ['categories' ]
推荐阅读
- php - Instagram 的 file_get_contents 返回空响应
- python - 如何找到没有'-'的最后一行
- android - “未找到默认活动”Android Studio 4.x
- python - spaCy:找不到模型“它”
- c# - 使用 VSTO 加载项以编程方式获取功能区列表
- python - cx_freeze 可执行文件无法与 Geckodriver 配合使用
- java - 在 Eclipse(实际上是 STS)w 中将项目从 JDK 8 迁移到 11 时无法解析 JavaFX 类。马文
- r - 计算每个相机每小时不同昆虫订单的平均值并绘制
- ios - 是否可以检测是否有任何其他特定应用程序当前在 iOS 中运行?
- python-3.x - 来自不同包的 Python 导入方法