【发布时间】:2018-10-05 11:34:31
【问题描述】:
使用 Django 文档中的示例,使用带有 Postgres 后端的 IntergerRangeField 创建具有以下模型的“年龄”范围:
from django.contrib.postgres.fields import IntegerRangeField
from psycopg2.extras import NumericRange
from django.db import models
class Event(models.Model):
name = models.CharField(max_length=200)
ages = IntegerRangeField()
def __str__(self):
return self.name
然而,当使用 Django Rest Frameworks 并使用带有以下过滤器的过滤器视图时,这非常有效:
import django_filters
from django_filters import rest_framework as filters
from app import Event
class EventFilter(django_filters.FilterSet):
ages = django_filters.NumericRangeFilter(queryset=Event.objects.all())
class Meta:
model = Event
fields = ['name','ages']
视图在 /api/event_filter/ 处生成 AssertionError,并建议向 Meta.filters_override 添加覆盖。 我真正欣赏的是基于此覆盖的示例模型的示例,django-filters 文档http://django-filter.readthedocs.io/en/latest/ref/filterset.html#filter-overrides 中的示例,并没有帮助我理解如何渲染它。我将不胜感激任何帮助,以便我可以通过这个示例理解以在将来使用它。
【问题讨论】:
-
请跟踪堆栈?
-
AssertionError: AutoFilterSet 使用“精确”查找将字段“年龄”解析为无法识别的字段类型 IntegerRangeField。尝试向“Meta.filter_overrides”添加覆盖。见:django-filter.readthedocs.io/en/develop/ref/…
-
或在浏览器视图中:
-
你访问的网址是什么?
-
当前 url 是 localhost
标签: django django-rest-framework django-filter