Django:跟踪模型的变化

时间:2017-12-05 05:11:19

标签: python django logging cassandra

我想跟踪模型中的更改,基本上记录views.py中的每个函数..这样对模型所做的任何更改都会反映在日志文件中。

views.py

def func_detail(func):
     @wraps(func)
     def func_wrapper(*args, **kwargs):
         logging.basicConfig(filename='test.log', filemode='a',
                      format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
                      datefmt='%H:%M:%S',
                      level=logging.DEBUG)
         print("Inside wrapper. Calling method %s now..."%(func.__name__))
         r = func(*args, **kwargs)
         logging.getLogger(__name__)
         return r
     return func_wrapper

class UsersViewSet(viewsets.ViewSet):
    @func_detail
    def update(self, request, pk=None):
        users = get_object_or_404(Mytable, name=pk)
        serializer = CheckSerializer(users, data=request.data)
        if serializer.is_valid():
            serializer.save()
            logging.info("Updated required data")
            return Response(serializer.data, status=status.HTTP_202_ACCEPTED)
        return Response(serializer.data, status=status.HTTP_400_BAD_REQUEST)

**models.py**

class Mytable(DjangoCassandraModel):
    name = columns.Text(primary_key=True)
    email = columns.Text()
    password = columns.Text()
    creation_date = columns.DateTime(default=datetime.datetime.today())
    modified_on = columns.DateTime(default=datetime.datetime.now)

在Views.py中: 我想做这样的事情:

def func_detail(func):
     @wraps(func)
     def func_wrapper(*args, **kwargs):
         logging.basicConfig(filename='test.log', filemode='a',
                      format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
                      datefmt='%H:%M:%S',
                      level=logging.DEBUG)
         if func.__name__ == 'list':
             print("This is all the list of objects created by you")
         elif func.__name__ == 'create':
             print("New user added in %s.%s" %(table.__name__, field.__name__))
         elif func.__name__ == 'retrieve':
             print("Tried retrieving pk %s" %(pk))
         elif func.__name__ == 'update':
             print("Updated model fields %s from table %s" %(field.__name__, table.__name__))
         elif func.__name__ == 'partial_update':
             print("Updated partial data from table %s in fields %s" %(table.__name__, field.__name__))

         # print("Inside wrapper. Calling method %s now..."%(func.__name__))
         r = func(*args, **kwargs)
         logging.getLogger(__name__)
         return r
     return func_wrapper

例如:如果我更改了我的名字"来自' abc'对于' xyz',它应该反映出对" name"进行了更改。来自' abc'到' xyz'。我不必使用任何第三方套餐。只需在' def func_detail'中添加几行代码这将动态跟踪更改和更新。我是django / python的新手,如果有人有任何想法那么请帮忙。提前致谢。

0 个答案:

没有答案