Django 如何准确地筛选列表JSONField?

Django 如何准确地筛选列表JSONField?,django,django-rest-framework,django-filter,Django,Django Rest Framework,Django Filter,我有一个模型,基本上可以归结为: class Model: json_field = JSONFIeld(default=list) 其中json_字段本质上是一个字符串列表。假设我有两个模型对象ModelA和ModelB,它们的json_字段分别为[“1”、“2”、“3”]和[“1”、“2”、“4”] 如何准确地过滤到json_字段?具体而言: 搜索值是多少 按搜索值筛选的查询是什么 实际上,我正在使用来管理DRF后端的搜索功能。(例如/api/v1/models/?json\u字段

我有一个模型,基本上可以归结为:

class Model:
    json_field = JSONFIeld(default=list)
其中json_字段本质上是一个字符串列表。假设我有两个模型对象
ModelA
ModelB
,它们的json_字段分别为
[“1”、“2”、“3”]
[“1”、“2”、“4”]

如何准确地过滤到json_字段?具体而言:

  • 搜索值是多少
  • 按搜索值筛选的查询是什么
  • 实际上,我正在使用来管理DRF后端的搜索功能。(例如/api/v1/models/?json\u字段=)

    不幸的是,似乎没有ArrayFilter或JSONFilter,所以这就是我正在使用的:

    class ModelFilter(django_filter.FilterSet):
        class Meta:
            model = Model
            field = "json_field"
    
        # Not even sure if this should be a CharFilter
        json_field = django_filters.CharFilter(method="json_field_filter") 
    
        def json_field_filter(self, queryset, name, value):
            return queryset.filter(json_field__iexact=value)
            # doesn't work where value = ["1","2","3"]
            # also doesn't work where value = "1","2","3"
    
    
    我可以在网上找到字典的解决方案(我一直在上面工作),但列表却没有。如有任何帮助/指点,将不胜感激

    class ModelFilter(django_filter.FilterSet):
        class Meta:
            model = Model
            field = "json_field"
    
        # Not even sure if this should be a CharFilter
        json_field = django_filters.CharFilter(method="json_field_filter") 
    
        def json_field_filter(self, queryset, name, value):
            return queryset.filter(json_field__iexact=value)
            # doesn't work where value = ["1","2","3"]
            # also doesn't work where value = "1","2","3"