我正在将Django Rest框架升级到当前版本。有了新的过滤功能,我发现如果有几个外键字段,任何外键字段都需要很长时间才能加载到初始页面(下面我使用的示例是event
是{filter_class
并传递FK-in-Meta-fields列表:
# my viewset
class TicketViewSet(ModelViewSet):
queryset = Ticket.objects.all()
filter_class = api_filters.TicketFilterSet
#my filterset
class TicketFilterSet(FilterSet):
event = django_filters.NumberFilter(name="event")
class Meta:
model = Ticket
fields = ["event", ]
在本例中,传递这样一个URL是有效的: http://website.com/api/tickets/?event=19919
此URL不: http://website.com/api/tickets/?event=http://website.com/api/events/19919/
我愿意接受任何一个。显然NumberFilter
只能处理一个数字,而不是一个URL——我如何使用一个可以接受这两种格式的过滤器呢?在
你真的应该试着去掉前端代码中的第二种形式。对这个完整url参数的任何支持都只是一种解决糟糕设计的方法,而糟糕的设计会一次又一次地伤害你。在
如果这不可能,请重载ViewSet的}(前面没有代码,因此无法判断哪一个最有效)方法,并使用regex从url获取id并将其放回
get
或{request.GET
-这有点棘手,因为它是只读的,因此必须克隆它,修改克隆并将其分配回请求。在相关问题 更多 >
编程相关推荐