如何解决如何在 django-filter 中创建 MultipleChoiceField?
class Color(models.Model):
color = models.CharField(max_length=32)
def __str__(self):
return self.color
还有我的产品型号:
class Product(models.Model):
...
color = models.ForeignKey('Color',on_delete=CASCADE)
...
所以我需要创建一个过滤器,我将能够获得例如所有红色、蓝色或黄色产品
我该怎么做?
解决方法
Product.objects.filter(color__name=some_color_name)
与 some_color_name
例如“黄色”。如果您有颜色对象,则可以使用:
Product.objects.filter(color=some_color)
可以使用双下划线 (__
) 来“透视”关系。
要为模型创建具有多种选择的过滤器,您可以使用 ModelMultipleChoiceFilter
[django-filter docs]。您还可以传递您希望用于该字段的表单 widget
,因此对于复选框,您将传递 CheckboxSelectMultiple
[Django docs]:
from django import forms
import django_filters
class ProductFilter(django_filters.FilterSet):
color = django_filters.ModelMultipleChoiceFilter(queryset=Color.objects.all(),widget=forms.CheckboxSelectMultiple())
class Meta:
model = Product
fields = ['color'] # Add any other fields you want to filter to the list
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。