1

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

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他们持有的内容传递给服务器:

  • 如果自客户端上次请求以来其他人更新了对象(因此服务器序列号将大于客户端序列号),则资源应返回更新后的对象。
  • 如果服务器序列号未更改,则资源不应返回任何内容(或空字段等)。

我试图通过向资源元添加过滤器来实现这一点:

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

并使用以下网址:

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

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

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

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

4

0 回答 0