json - Django 休息框架 charfilter json
问题描述
我在 django rest charfilterinfilter(field_name= 'genres__name', lookup_expr= 'in') 中有一个过滤器。我在数据库中有两个类别可以通过多对多来接近我,但是我在过滤这个产品的两个类别时有有两个元素我只需要一个元素
意见
class CharFilterInFilter(filters.BaseInFilter, filters.CharFilter):
pass
class ShoppFilter(filters.FilterSet):
price = filters.RangeFilter()
genres = CharFilterInFilter(field_name='genres__name')
title = SearchFilter()
class Meta:
model = smartphone
fields = ['price','genres','title']
class MDShopListView(generics.ListAPIView):
queryset = smartphone.objects.all()
filter_backends = (DjangoFilterBackend,SearchFilter)
search_fields = ['title']
filterset_class = ShoppFilter
def get(self, request):
queryset = self.filter_queryset(self.get_queryset())
serializer=MDShopListSerializer(queryset,many=True)
return Response(serializer.data)
楷模
genres = models.ManyToManyField(Genre, verbose_name="жанры")
class Genre(models.Model):
[enter image description here][1]
name = models.CharField("Имя", max_length=100)
img json 1: https://i.stack.imgur.com/4WR6L.png
解决方案
在这里改变和工作
queryset = self.filter_queryset(self.get_queryset()).distinct()
class CharFilterInFilter(filters.BaseInFilter, filters.CharFilter):
pass
class ShoppFilter(filters.FilterSet):
price = filters.RangeFilter()
genres = CharFilterInFilter(field_name='genres__name', lookup_expr='in')
title = SearchFilter()
class Meta:
model = smartphone
fields = ['price','genres','title']
class MDShopListView(generics.ListAPIView):
queryset = smartphone.objects.all()
filter_backends = (DjangoFilterBackend,SearchFilter)
search_fields = ['title']
filterset_class = ShoppFilter
def get(self, request):
queryset = self.filter_queryset(self.get_queryset()).distinct()
serializer=MDShopListSerializer(queryset,many=True)
return Response(serializer.data)
推荐阅读
- sql - Oracle SQL 子查询
- java - maven 未经代理授权
- php - 搜索用 htaccess 替换查询字符串
- video - 颤动的video_player pacakge在ios设备中不起作用(在android中工作)
- mysql - 如何在选择时将 NULL 包含到 ENUM 中?
- office-js - 内容控制嵌套在 word 中
- c# - XmlReader XSD 验证在带有 _ 的电子邮件正则表达式上失败
- flutter - 使用redux时如何在flutter中生成g.dart文件?
- angular - 在 Angular Select 中取消选择项目
- android - 如何以百分比显示所有文件的进度