我有一个 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)的任何建议?