代码之家  ›  专栏  ›  技术社区  ›  Nifas

Django公司对象.raw('query')不返回更新的queryset

  •  0
  • Nifas  · 技术社区  · 3 年前
    class view_name(viewsets.ModelViewSet):
        queryset = model_name.objects.raw('call stored_procedure();')
        serializer_class = model_name_Serializers
        permission_classes = [IsAuthenticated]
    

    因此,当我执行上面的rest框架视图集时。很好用。 但是当我更新任何会影响存储过程查询集的值时。

    它仍然返回上一个查询集,而不是更新的查询集。 然后,我在数据库(mysql)中运行callproceduressql语句进行检查,在那里它返回更新的queryset。

    但是这个原始函数将继续显示带有先前值的queryset。 它仅在重新启动localhost服务器后返回更新的queryset。
    0 回复  |  直到 3 年前
        1
  •  1
  •   Charnel    3 年前

    我认为这种行为的原因是 raw 在类构造期间执行查询。这是什么 documentation

    获取原始SQL查询, 执行它

    queryset 可以定义 get_queryset

    def get_queryset(self):
        return model_name.objects.raw('call stored_procedure();')