int() argument must be a string, a bytes-like object or a number, not ‘CombinedExpression’
引发异常代码:
因为使用了F对象, 此时结果保存在内存中, 并没有刷新到数据库中, 所以序列化会出错
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
instance.read_count = F('read_count') + 1 # 阅读次数+1
instance.save()
serializer = self.get_serializer(instance)
return Response(serializer.data)
解决方案
加上: instance.refresh_from_db()
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
instance.read_count = F('read_count') + 1 # 阅读次数+1
instance.save() # <CombinedExpression: F(read_count) + Value(1)>
instance.refresh_from_db() # 不加这句序列化会抛出CombinedExpression
serializer = self.get_serializer(instance)
return Response(serializer.data)