我在我的django应用程序中使用了tastepie,我试图让它映射像“/api/booking/2011/01/01”这样的url,它映射到url中具有指定时间戳的Booking模型。该文档没有说明如何实现这一目标。
问问题
3203 次
1 回答
12
你想在你的资源中做的是提供一个
def prepend_urls(self):
return [
url(r"^(?P<resource_name>%s)/(?P<year>[\d]{4})/(?P<month>{1,2})/(?<day>[\d]{1,2})%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('dispatch_list_with_date'), name="api_dispatch_list_with_date"),
]
方法,它返回一个 url,它指向一个视图(我将其命名为 dispatch_list_with_date),它可以满足您的需求。
例如,在 base_urls 类中,它指向一个名为“dispatch_list”的视图,它是列出资源的主要入口点,您可能只想使用自己的过滤来复制它。
您的视图可能与此非常相似
def dispatch_list_with_date(self, request, resource_name, year, month, day):
# dispatch_list accepts kwargs (model_date_field should be replaced) which
# then get passed as filters, eventually, to obj_get_list, it's all in this file
# https://github.com/toastdriven/django-tastypie/blob/master/tastypie/resources.py
return dispatch_list(self, request, resource_name, model_date_field="%s-%s-%s" % year, month, day)
真的,我可能只是在普通列表资源中添加一个过滤器
GET /api/booking/?model_date_field=2011-01-01
您可以通过向 Meta 类添加过滤属性来获取此信息
但这是个人喜好。
于 2011-08-04T03:55:47.170 回答