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',),
}
そして、次の URL を使用します。
http://.../api/foo/123/?sequence_number__gt=123
しかし、それは効果がありませんでした。リストリソースを使用したときに機能しました
http://.../api/foo/?sequence_number__gt=123
では、Tastypie を詳細リソースのフィルターを受け入れるように構成することは可能ですか? そうでない場合、(まだ Tastypie を使用している間に) 自分のソリューションを展開する方法について何か提案はありますか?