Как вывести форму на HTML-шаблон Django, используя фильтр_полей Viewset в django rest framwork?
- У меня есть Viewset с пользовательским
filterset_class
:
class CommunityViewset(LoginRequiredMixin, viewsets.ModelViewSet):
queryset = ...
serializer_class = CommunitySerializer
filterset_class = CommunityFilter
template_name = ...
filter_fields = ('groups',
'person__first_name',
...)
def list(self, request, *args, **kwargs):
# getting serializer output
response = super(CommunityViewset, self).list(request, *args, **kwargs)
# default format is html, returning serializer data if json is requested
if request.accepted_renderer.format == 'json':
return response
# if HTML
return Response({'data': response.data,
'filter': get_filter_context(self) #!!!! GOING TO REFERENCE THIS BELOW
})
- Я хочу отобразить форму на HTML-шаблоне для выполнения фильтрованного GET-запроса (например,
localhost/community?groups=group1
). У меня есть пользовательская функцияget_filter_context()
, которая получает поля класса filterest и отображает их в html:
def get_filter_context(viewset):
''' create filters dictionary for list views
@param {obj} viewset: rest_framework.viewsets.ModelViewSet subclass instance
@returns {dic} filters: filters template dictionary
'''
f = viewset.filterset_class(viewset.request.GET, viewset.queryset)
dic = {'form': f.form} #!!!!! REFERENCING THIS BELOW
return dic
f.form
возвращает полную форму django, которая не является сериализуемой. Есть ли способ вывести форму без передачи ее в контекст?