【Django-ninja】django ninja中使用查询过滤器FilterSchema
在Django Ninja中,可以使用FilterSchema
来定义查询过滤器。这个过滤器可以用于视图的查询参数,以便根据这些参数过滤查询集。
以下是一个简单的例子,展示了如何在Django Ninja中使用FilterSchema
:
from ninja import Schema
from django_ninja import QueryArgument
from django.db.models import Q
from .models import MyModel
# 定义过滤器Schema
class MyFilterSchema(Schema):
q: str = QueryArgument(default="")
@api.get("/items")
def get_items(request, filter: MyFilterSchema):
# 使用过滤器参数来构建查询集
queryset = MyModel.objects.all()
if filter.q:
# 使用Q对象来构建复杂的查询条件
queryset = queryset.filter(
Q(name__icontains=filter.q) |
Q(description__icontains=filter.q)
)
return queryset
在这个例子中,我们定义了一个MyFilterSchema
类,它有一个字符串类型的查询参数q
。在get_items
视图中,我们使用这个过滤器来构建查询集,根据q
参数进行过滤。如果q
不为空,我们使用Q
对象来构建一个或条件,实现对名称或描述包含查询词的模型实例的查询。
评论已关闭