Переопределение метода набора запросов в Django
Я пытаюсь переопределить get_queryset в классе django ViewSet, но получаю ошибку маршрутизатора :
extra_actions = viewset.get_extra_actions() AttributeError: объект 'function' не имеет атрибута 'get_extra_actions'
Вот мой класс ViewSet :
class InvestmentViewSet(NestedViewSetMixin, ModelViewSet):
"""
A viewset that provides `retrieve`, `create`, and `list` actions for Investments.
"""
model = Investment
serializer_class = InvestmentSerializer
queryset = Investment.objects.all()
def get_active_investment(self):
"""Get active investment
Only One investment/startup is active
"""
queryset = Investment.objects.all()
active = self.request.query_params.get('active')
if active is True:
queryset = queryset.filter(investment_status=active)
return queryset
Вот как я вызываю его с помощью маршрутизатора :
from django.conf import settings
from django.contrib import admin
from django.urls import path, re_path
from django.views.static import serve
from rest_framework_extensions.routers import ExtendedSimpleRouter
from back import views
router = ExtendedSimpleRouter()
(
router.register(r'api/startups', views.StartUpViewSet, basename='startup')
.register(r'investments', views.InvestmentViewSet.get_active_investment, basename='startups_investment',
parents_query_lookups=['startup'])
)
urlpatterns = [
path('admin/', admin.site.urls),
*router.urls,
re_path(r'media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),
]