2017-10-31 16 views
0

私は次のルートがあります。私は私のスキーマを示しビューに行くとき、私が取得drf detail_routeにカスタムスキーマを渡す方法は?

@detail_route(methods=['post'], permission_classes=[IsOperator], schema=AutoSchema(manual_fields=[ 
    coreapi.Field('size', location='query', schema={'type': 'number', 'example': 1024}), 
    coreapi.Field('filename', location='query', schema={'type': 'string', 'example': 'telemetry.tlog'}) 
])) 
def get_upload_url(self): 
    # ... 

を:

私は次のエラーを取得:

AttributeError: 'AutoSchema' object has no attribute '_view' 

スタックトレース:

File "/Users/frederikcreemers/.virtualenvs/theproject/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner 
    41.    response = get_response(request) 

File "/Users/frederikcreemers/.virtualenvs/theproject/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response 
    187.     response = self.process_exception_by_middleware(e, request) 

File "/Users/frederikcreemers/.virtualenvs/theproject/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response 
    185.     response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "/Users/frederikcreemers/.virtualenvs/theproject/lib/python2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view 
    58.   return view_func(*args, **kwargs) 

File "/Users/frederikcreemers/.virtualenvs/theproject/lib/python2.7/site-packages/django/views/generic/base.py" in view 
    68.    return self.dispatch(request, *args, **kwargs) 

File "/Users/frederikcreemers/.virtualenvs/theproject/lib/python2.7/site-packages/rest_framework/views.py" in dispatch 
    489.    response = self.handle_exception(exc) 

File "/Users/frederikcreemers/.virtualenvs/theproject/lib/python2.7/site-packages/rest_framework/views.py" in handle_exception 
    449.    self.raise_uncaught_exception(exc) 

File "/Users/frederikcreemers/.virtualenvs/theproject/lib/python2.7/site-packages/rest_framework/views.py" in dispatch 
    486.    response = handler(request, *args, **kwargs) 

File "/Users/frederikcreemers/.virtualenvs/theproject/lib/python2.7/site-packages/rest_framework_swagger/views.py" in get 
    32.    schema = generator.get_schema(request=request) 

File "/Users/frederikcreemers/.virtualenvs/theproject/lib/python2.7/site-packages/rest_framework/schemas/generators.py" in get_schema 
    279.   links = self.get_links(None if public else request) 

File "/Users/frederikcreemers/.virtualenvs/theproject/lib/python2.7/site-packages/rest_framework/schemas/generators.py" in get_links 
    317.    link = view.schema.get_link(path, method, base_url=self.url) 

File "/Users/frederikcreemers/.virtualenvs/theproject/lib/python2.7/site-packages/rest_framework/schemas/inspectors.py" in get_link 
    166.   fields = self.get_path_fields(path, method) 

File "/Users/frederikcreemers/.virtualenvs/theproject/lib/python2.7/site-packages/rest_framework/schemas/inspectors.py" in get_path_fields 
    237.   view = self.view 

File "/Users/frederikcreemers/.virtualenvs/theproject/lib/python2.7/site-packages/rest_framework/schemas/inspectors.py" in view 
    123.   assert self._view is not None, "Schema generation REQUIRES a view instance. (Hint: you accessed `schema` from the view class rather than an instance.)" 

答えて

3

@list_routeと@details_routeには、次のように追加できます

@list_route(
    schema=ManualSchema(fields=[ 
     coreapi.Field(
      "page", 
      required=True, 
      location="query", 
      schema=coreschema.String() 
     ), 
     coreapi.Field(
      "page_size", 
      required=True, 
      location="query", 
      schema=coreschema.String() 
     ), 
     coreapi.Field(
      "product_id", 
      required=True, 
      location="path", 
      schema=coreschema.Integer() 
     ) 
    ]), 
    url_name='product', 
    url_path='product/(?P<product_id>[0-9]+)' 
) 
関連する問題