誰かがTastypie-Mailinglistを読んでいれば、私はそこに答えを得られなかったので、ここでクロスポストするのは申し訳ありません。get_resource_uriの逆URLを構築する
私はPKよりも別のキーを使用しているため、TastypieではリソースのURLパターンを変更しました。これは、リソースにアクセスするとうまく動作します。 このリソースを親リソースにネストしたいが、ネストされたリソースには私のカスタムキーではなく、PKのURIが含まれている。私が学んだのは、私の場合、子供のget_resource_uriを変更する必要があるということです。
def get_resource_uri(self, bundle_or_obj):
obj = bundle_or_obj.obj if isinstance(bundle_or_obj, Bundle) else bundle_or_obj
kwargs={
'resource_name': self._meta.resource_name,
'custom_id': obj.custom_id
}
return self._build_reverse_url('api_dispatch_detail', kwargs=kwargs)
子供のURLのオーバーライドメソッドはこれです:
def override_urls(self):
return [
url(r"^(?P<resource_name>%s)/(?P<custom_id>[-_\w\d]+)%s$" % (
self._meta.resource_name,
trailing_slash()
),
self.wrap_view('dispatch_detail'),
name="api_dispatch_detail"
),
]
しかし、アプリケーションがURLを元に戻すことはできません
(NamespacedResourceである)私の子供のリソースのメソッドは次のようになります。このエラーが発生します:
Reverse for 'api_dispatch_detail' with arguments '()' and keyword arguments '{'custom_id': u'3_ee5-4423', 'resource_name': 'myresource'} not found.
URLを正しくリバートするにはどうすればよいですか?
ありがとうございます。
完璧な、ありがとう! – schneck