Как вывести форму на 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, которая не является сериализуемой. Есть ли способ вывести форму без передачи ее в контекст?

Вернуться на верх