Arb*_*ain 8 django django-templates django-models django-forms django-rest-framework
django-filter在 Model 的所有默认字段上都可以正常工作,但是当我们想要在 Postgres 字段(例如 JSONField)上使用它时就会出现问题
我有以下模型:
from django.contrib.postgres.fields import JSONField,ArrayField
class MyModel(models.Model):
j_field = JSONField(blank=True,null=True,default=dict)
Run Code Online (Sandbox Code Playgroud)
j_field具有以下结构的数据:
[{"name":"john","work":"developer"},{"name":"cena","work":"teacher"}]
Run Code Online (Sandbox Code Playgroud)
name或work使用来过滤结果?j_fielddjango-filterimport django_filters
class MyModelFilter(django_filters.FilterSet)
class Meta:
model = MyModel
...
...
what's next?
Run Code Online (Sandbox Code Playgroud)
基本上,您需要创建一个自定义方法来过滤:
import django_filters
class MyModelFilter(django_filters.FilterSet)
class Meta:
model = MyModel
fields = ('name', 'work')
name = django_filters.CharFilter(
method='name_filter'
)
work = django_filters.CharFilter(
method='work_filter'
)
def name_filter(self, queryset, name, value):
return queryset.filter(j_field__name__iexact=value)
def work_filter(self, queryset, name, value):
return queryset.filter(j_field__work__iexact=value)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4020 次 |
| 最近记录: |