django - method() 接受 1 个位置参数,但在分页装饰器操作中给出了 2 个
问题描述
我在 django rest 框架中做一个关于动作装饰器的分页器时遇到问题,我找不到解决方案,问题是它给了我以下错误:
get_response_data () 接受 1 个位置参数,但给出了 2 个
class InterfacesViewSet(viewsets.ModelViewSet):
queryset = Interfaces.objects.all()
serializer_class = InterfaceSerializer
pagination_class = PostPageNumberPagination
def get_response_data(paginated_queryset):
data =[ {
'id_interface': interface.id_interface,
'id_EquipoOrigen': interface.id_EquipoOrigen_id,
'EquipoOrigen': interface.id_EquipoOrigen.nombre,
'LocalidadOrigen': interface.id_EquipoOrigen.localidad,
'CategoriaOrigen': interface.id_EquipoOrigen.categoria,
'id_PuertoOrigen': interface.id_PuertoOrigen_id,
'PuertoOrigen': interface.id_PuertoOrigen.nombre,
'estatus': interface.estatus,
'etiqueta_prtg': interface.etiqueta_prtg,
'grupo': interface.grupo,
'if_index': interface.if_index,
'bw': interface.bw,
'bw_al': interface.bw_al,
'id_prtg': interface.id_prtg,
'ospf': interface.ospf,
'description': interface.description,
'id_EquipoDestino': interface.id_EquipoDestino_id,
'EquipoDestino': interface.id_EquipoDestino.nombre,
'LocalidadDestino': interface.id_EquipoDestino.localidad,
'CategoriaDestino': interface.id_EquipoDestino.categoria,
'id_PuertoDestino': interface.id_PuertoDestino_id,
'PuertoDestino': interface.id_PuertoDestino.nombre,
'ultima_actualizacion': interface.ultima_actualizacion,
} for interface in queryset]
return data
@action(methods=['get'], detail=False, url_path='registros-data-table',
url_name='registros_data_table')
def registros_data_table(self, request):
queryset = Interfaces.objects.all()
page = self.paginate_queryset(queryset)
if page is not None:
data = self.get_response_data(page)
return self.get_paginated_response(data)
data = self.get_response_data(queryset)
return Response(data)
解决方案
函数get_response_data
需要 1 个位置参数,但您使用两个 - objectself
和 list调用它page
。
data = self.get_response_data(page)
这是显示此问题的较短示例代码:
class Example:
def test(*args):
print(args)
def run(self):
self.test("my string")
Example().run()
# (<__main__.Example object at 0x10320b160>, 'my string')
要解决此问题,您可以更改函数签名以包含self
位置参数:
def get_response_data(self, paginated_queryset):
推荐阅读
- python-3.x - 为什么 instapy 找不到元素 xpath
- android - 为什么我的 Log.e() 记录一个没有标签的值?
- java - Nginx 累积写入连接
- python - 将数据框列与相似条目相结合
- javascript - 如何在 Javascript 中正确使用 if 语句中的数组
- python - 敌人在 Pygame 中没有取消暂停
- r - R - Apply function on multiple data frames
- python - 如何在for循环中捕获函数的输出
- javascript - Phaser3 - 在物理街机引擎上为车辆添加加速和拖动
- android - Kotlin] 我想使用 Intent 将一些数据从 One 类发送到 Other 类