首页 > 解决方案 > django rest framework - 更新 ModelViewSet 类变量

问题描述

我有一个如下所示的 ModelViewSet

class BusinessViewSet(ModelViewSet):
    filterset_class = BusinessFilter
    serializer_class = BusinessSerializer
    ordering_fields = [
        "source",
        "xl_source",
        "company_name",
        "contact_title",
        "category",
        "contact_name",
        "description",
        "tags",
        "business_hours",
        "location",
        "website",
        "phone",
        "email",
        "social_media",
        "address",
        "is_ecommerce",
        "is_verified",
        "ownership",
        "supplemental_information",
        "products",
        "location_street",
        "location_city",
        "location_state",
        "location_zip",
    ]

    def get_queryset(self):

        referer = self.request.META["HTTP_REFERER"]
        try:
            source = referer.split("source=")[1]
        except Exception as e:
            print(e)
            source = None

        if source == None:
            queryset = Business.objects.all()
        elif source == 'SBASpecial':
            queryset = SBABusiness.objects.all()
            self.serializer_class = SBABusinessSerializer
            self.filterset_class = SBABusinessFilter
            self.ordering_fields = [
                'name_and_trade_of_firm',
                'contact',
                'address_city',
                'capabilities_narrative',
                'ownership_self_certs',
                'email_address',
                'www_page_url',
                'phone_number',
                'year_established',
                'keywords',
                'naics_codes',
            ]
        else:
            queryset = Business.objects.filter(xl_source=source)

        return queryset

如您所见,如果sourceSBASpecial,我尝试更改类变量serializer_class,filterset_classordering_fieldsinside get_queryset。显然这是行不通的。我查看了 django rest 框架文档,没有任何东西可以帮助我解决这个问题。我能做些什么?任何帮助表示赞赏。提前致谢

标签: pythondjangodjango-rest-framework

解决方案


推荐阅读