3

Tastypie API はアップロード ファイルをサポートしていないため、通常のビュー機能を使用する必要があります。他の質問を確認してください。

これは私の画像リソースです

 class ImageResource(ModelResource):
     album = fields.ForeignKey(AlbumResource, 'album')
     upload_by = fields.ForeignKey(UserResource, 'upload_by')

     class Meta:
         always_return_data=True
         filtering = {
                 "album": ('exact',),
                  }
         queryset = Image.objects.all()
         cache = SimpleCache(timeout=100)
         resource_name = 'image'
         authorization = ImageAuthorization()

通常の表示機能で画像をアップロードするとします。キャッシュのタイムアウトを 100 秒に設定したため、ブラウザは 100 秒でクエリを更新しません。

私が望むのは、画像がアップロードされた直後にブラウザがクエリを更新し、何も変更されていない場合はキャッシュのタイムアウトを100秒に保つことです。これは通常のビュー機能で行う必要があります。

これどうやってするの?

4

1 に答える 1

0

必要に応じて、キャッシュを手動でクリアできます。Tastypie のキャッシュ キーは次のようになります (simpleCache を使用している場合)

def generate_cache_key(self, *args, **kwargs):
    """
    Creates a unique-enough cache key.

    This is based off the current api_name/resource_name/args/kwargs.
    """
    smooshed = []

    for key, value in kwargs.items():
        smooshed.append("%s=%s" % (key, value))

    # Use a list plus a ``.join()`` because it's faster than concatenation.
    return "%s:%s:%s:%s" % (self._meta.api_name, self._meta.resource_name, ':'.join(args), ':'.join(smooshed))

(これは、現在 1031 行にあるコードから直接引用したものです)

探しているオブジェクトに正確にヒットしたことを確認するために、シェルをいじることができます。それを取得したら、ファイルをアップロードするときにエントリを削除するだけです。

于 2013-06-10T05:58:05.433 に答える