Tastypie过滤器可以应用于详细资源吗?

时间:2013-04-05 12:11:48

标签: django tastypie

我有一个带有sequence_number字段的Django模型,每次模型实例更新时都会递增:

class Foo(models.Model):
    bar = models.TextField()
    sequence_number = models.IntegerField(default=0)

我为此模型实现了Tastypie资源,如下所示:

class FooResource(ModelResource):
    class Meta:
        queryset = Foo.objects.all()
        resource_name = 'foo'
        list_allowed_methods = ['get']
        detail_allowed_methods = ['put', 'get']

因此,客户端用户可以使用如下URL来请求Foo的特定实例:

http://.../api/foo/123/

客户端应用程序保留sequence_number,以便他们知道他们持有的对象版本。

我想在详细信息资源上实现过滤器,以便客户端可以将他们持有的sequence_number传递给服务器:

  • 如果其他人自客户端的最后一个请求更新了对象(因此服务器sequence_number将大于客户端sequence_number),那么资源应该返回更新的对象。
  • 如果服务器sequence_number未更改,则资源应该不返回任何内容(或空字段等)。

我尝试通过向资源元数据添加过滤器来实现此目的:

    filter = {
        'sequence_number': ('gt',),
    }

使用以下网址:

http://.../api/foo/123/?sequence_number__gt=123

但它没有效果。当我使用列表资源时,它确实有效。

http://.../api/foo/?sequence_number__gt=123

那么 - 是否可以配置Tastypie接受详细资源的过滤器?如果没有,有关如何推出自己的解决方案的任何建议(同时仍然使用Tastypie)?

0 个答案:

没有答案