nếu có ai đọc Danh sách gửi thư Tastypie: Tôi không nhận được câu trả lời ở đó, vì vậy xin lỗi vì đã đăng ký ở đây.Xây dựng các url ngược trong get_resource_uri
Trong Tastypie, tôi đã thay đổi mẫu URL của tài nguyên, vì tôi sử dụng khóa khác ngoài PK. Điều này làm việc tốt khi tôi truy cập Tài nguyên. Bây giờ tôi muốn lồng Tài nguyên này vào Tài nguyên mẹ, nhưng Tài nguyên lồng nhau chứa các URI với PK, không phải khóa tùy chỉnh của tôi. Điều tôi học được là trong trường hợp của tôi, tôi phải thay đổi get_resource_uri của đứa trẻ.
Phương pháp trong tài nguyên của con tôi (mà là một NamespacedResource) trông như thế này:
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)
phương pháp url override của đứa trẻ là thế này:
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"
),
]
Nhưng ứng dụng không thể đảo ngược URL. Tôi gặp lỗi này:
Reverse for 'api_dispatch_detail' with arguments '()' and keyword arguments '{'custom_id': u'3_ee5-4423', 'resource_name': 'myresource'} not found.
Làm cách nào để đảo ngược URL chính xác?
Xin cảm ơn trước.
hoàn hảo, cảm ơn! – schneck