【发布时间】:2020-04-21 20:11:52
【问题描述】:
我在不同的ModelViewSets 中一次又一次地重复我的代码,这里唯一改变的是模型的名称。所以,我想为此编写一个基类并将每个模型的名称作为参数发送,但它不起作用。
有什么帮助吗?
class RemitterQueryViewViewset(viewsets.ModelViewSet):
queryset = RemitterQueryView.objects.all()
serializer_class = RemitterQueryViewSerializer
http_method_names = ['get']
def get_base_path(self):
splitted_url = self.request.build_absolute_uri().split('?')
base_url = splitted_url[0]
return base_url
def get_queryset(self):
limit = self.request.query_params.get('limit', 26)
offset = self.request.query_params.get('offset', 0)
filter_list = self.request.query_params.get('filter_list', None)
sort_list = self.request.query_params.get('sort_list', None)
if filter_list is None and sort_list is None:
return RemitterQueryView.objects.filter(id__gt=int(offset))[0:int(limit)]
elif filter_list is not None and sort_list is not None:
filter_columns = self.get_filter_list()
sort_columns = self.get_sort_list()
sort_columns = list(itertools.chain(*sort_columns))
return RemitterQueryView.objects.filter(id__gt=int(offset), **filter_columns).order_by(*sort_columns)[0:int(limit)]
elif filter_list is None and sort_list is not None:
sort_columns = self.get_sort_list()
sort_columns = list(itertools.chain(*sort_columns))
return RemitterQueryView.objects.filter(id__gt=int(offset)).order_by(*sort_columns)[0:int(limit)]
elif filter_list is not None and sort_list is None:
filter_columns = self.get_filter_list()
# print(filter_columns)
# print(MockData.objects.filter(id__gt=int(offset), **filter_columns)[0:int(limit)])
return RemitterQueryView.objects.filter(id__gt=int(offset), **filter_columns)[0:int(limit)]
【问题讨论】:
标签: django python-2.7 inheritance django-rest-framework