自学内容网 自学内容网

Django 的 ModelViewSet 中的 get_queryset 方法自定义查询集

场景:每次调用接口,自动更新某个字段

基于Django REST framework

class ApiDataTrackingView(ModelViewSet):
    queryset = ApiDataTracking.objects.all()
    serializer_class = ApiDataTrackingSerializers
    filterset_class = ApiDataTrackingFilter
    ordering_fields = ['id', 'run_date', 'run_success_rate', 'interface_coverage', 'regression_case_coverage']

    def get_queryset(self):
        """ 更新test_manager字段 """
        queryset = super().get_queryset()
        for obj in queryset:
            obj.test_manager = Product.objects.get(name=obj.product.name).test_manager
            obj.save(update_fields=['test_manager'])  # 只更新test_manager字段
        return queryset

    @auth
    @CatchExceptionLog
    @Log('GET', '获取数据')
    def list(self, request, *args, **kwargs):
        return super().list(request, *args, **kwargs)

挺好用的,但是当数据量大的时候会有性能问题,可以考虑批量查询更新或更好的方式


原文地址:https://blog.csdn.net/z_johnny/article/details/143702860

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!