【问题标题】:Django Rest Framework viewsets queryset duplicateDjango Rest Framework 视图集查询集重复
【发布时间】:2016-09-30 13:06:27
【问题描述】:

我可以对两个不同的ModelViewSet 类使用相同的查询集吗?

我尝试使用相同的查询集,但 django rest 框架重复了我的 API 路由。

views.py

class PlannerAgentViewSet(viewsets.ModelViewSet):

    queryset = EstateStatus.objects.all()
    serializer_class = PlannerAgentListingSerializer
    permission_classes = (IsAuthenticated,)
    http_method_names = ['get']

class PlannerClientViewSet(viewsets.ModelViewSet):

    queryset = EstateStatus.objects.all()
    serializer_class = PlannerClientListingSerializer
    permission_classes = (IsAuthenticated,)
    http_method_names = ['get']

urls.py

router = routers.DefaultRouter()
router.register(r'planner_agent', views.PlannerAgentViewSet)
router.register(r'planner_client', views.PlannerClientViewSet)

我得到:

"planner_agent": "http://127.0.0.1:8000/api/v1/planner_client/",

"planner_client": "http://127.0.0.1:8000/api/v1/planner_client/",

当我使用不同的查询集时。所以我可以使用相同的查询集? 感谢您的帮助。

更新: 路由 "http://127.0.0.1:8000/api/v1/planner_agent/" 存在,但必须手动访问

【问题讨论】:

    标签: python django api rest django-rest-framework


    【解决方案1】:

    当然你可以这样做,但是你必须为你的路由手动设置base_name 来改变那些uri。

    在你的情况下:

    router.register(r'planner_agent', views.PlannerAgentViewSet, base_name='planner_agent')
    router.register(r'planner_client', views.PlannerClientViewSet, base_name='planner_client')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-17
      • 2020-09-25
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 2015-10-26
      • 2017-08-05
      • 1970-01-01
      相关资源
      最近更新 更多