如何使用REST / Django休息框架检索过期模型的更改

时间:2013-09-16 11:19:02

标签: django rest django-models django-rest-framework

想象一下,我有一个REST后端和一个从后端检索数据的移动设备。是否有可能从设备发送请求并仅获取模型的更改?例如,设备接收并解析了以下模型:

{ 
  id = 40, 
  vote_up_counter = 5, 
  message = 'This is awesome!', 
  author = 'Peter Morgan' 
}

现在其他人投票赞成此消息,模型更改为:

{ 
  id = 40, 
  vote_up_counter = 6, 
  message = 'This is awesome!', 
  author = 'Peter Morgan' 
}

我想要的是一个类似于流程的响应,因为我不需要再次检索消息和作者:

{
  id = 40, 
  vote_up_counter = 6
}

有什么办法可以实现吗?例如。我的移动设备使用时间戳存储模型,如果已过期,我请求更改/获取模型的更新。我想我需要在模型中添加last_modified时间戳或使用与版本控制系统类似的东西。

我知道这与推送服务非常接近,但是如果在向服务器提取请求时可以检索模型更新(使用较低的流量),我会感到很紧张。我将不胜感激任何帮助!

致以最诚挚的问候,

迈克尔

编辑:

我需要提一下,我想发送请求并更新多个对象。如果我检索id为1到50的对象并且只有id为40和42的对象发生了变化,那么我只想获得对象40和42的响应,而不是所有其他对象。

1 个答案:

答案 0 :(得分:1)

这里有两种可能的方法:

  1. 向模型添加更多字段。这些将是last_updated和fields_updated。希望他们的名字可以解释目的。
  2. 使用django-audit-log。然后,您将查询审计日志表,以查找自上次检查以来哪些字段已更新。
  3. 在任何一种情况下,您都需要添加模型以跟踪用户何时访问表格中的行。