class MultipleFieldLookupMixin(object):
"""
Apply this mixin to any view or viewset to get multiple field filtering
based on a `lookup_fields` attribute, instead of the default single field filtering.
"""
def get_object(self):
queryset = self.get_queryset() # Get the base queryset
queryset = self.filter_queryset(queryset) # Apply any filter backends
filter = {}
for field in self.lookup_fields:
if self.kwargs[field]: # Ignore empty fields.
filter[field] = self.kwargs[field]
return get_object_or_404(queryset, **filter) # Lookup the object
然后,您可以在需要应用自定义行为的任何时候将这个mixin应用到视图或视图集。在
^{pr2}$
我将此代码添加到我的项目中
class CaseInsensitiveLookupMixin(object):
"""
Stole majority of this mixin
from http://www.django-rest-framework.org/api-guide/generic-views/
"""
def get_object(self):
queryset = self.get_queryset() # Get the base queryset
queryset = self.filter_queryset(queryset) # Apply any filter backends
filter = {self.lookup_field: self.kwargs[self.lookup_field].lower()}
return get_object_or_404(queryset, **filter) # Lookup the object
我使用(优秀的)Django Rest框架文档,特别是here
例如,如果需要根据URL conf中的多个字段查找对象,可以创建一个mixin类,如下所示:
然后,您可以在需要应用自定义行为的任何时候将这个mixin应用到视图或视图集。在
^{pr2}$我将此代码添加到我的项目中
必须将
from django.shortcuts import get_object_or_404
添加到该文件的顶部,并将详细视图更改为class OdbcConfigDatasourceDetail(CaseInsensitiveLookupMixin, generics.RetrieveUpdateDestroyAPIView):
为DRF团队的优秀文档提供支持。在
相关问题 更多 >
编程相关推荐