gpt4 book ai didi

django - 如何在 DRF 中将 django filter_fields 与 ArrayField 一起使用

转载 作者:行者123 更新时间:2023-12-03 14:01:18 27 4
gpt4 key购买 nike

我在我的模型中使用 Postgres ArrayField。我正在尝试使用 django 过滤器,但出现错误。

AutoFilterSet 通过对无法识别的字段类型 ArrayField 进行“精确”查找来解析字段“ flavor ”。尝试向“Meta.filter_overrides”添加覆盖。见:https://django-filter.readthedocs.io/en/master/ref/filterset.html#customise-filter-generation-with-filter-overrides

模型

class Items(models.Model):
item = models.CharField(max_length=150, unique=True)
matches = ArrayField(models.CharField(
max_length=200), blank=True, default=list)
category = ArrayField(models.CharField(
max_length=200), blank=True, default=list)
flavor = ArrayField(models.CharField(
max_length=200), blank=True, default=list)
special = ArrayField(models.CharField(
max_length=200), blank=True, default=list)
created_at = models.DateTimeField(auto_now_add=True)

View 集

class CategoryViewSet(viewsets.ModelViewSet):
queryset = Items.objects.all()
serializer_class = CategorySerializer
filter_fields = ('item', 'category')

最佳答案

好吧,我想通了,哈哈。需要使用 lookup_expr='icontains' 创建自定义过滤器。

class CategoryFilter(filters.FilterSet):
category = filters.CharFilter(lookup_expr='icontains')

class Meta:
model = Items
fields = ('item', 'category')
class CategoryViewSet(viewsets.ModelViewSet):
queryset = Items.objects.all()
serializer_class = CategorySerializer
filterset_class = CategoryFilter

关于django - 如何在 DRF 中将 django filter_fields 与 ArrayField 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56252063/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com