【发布时间】:2013-03-27 20:40:39
【问题描述】:
使用 Django 1.5 我将 slug 存储在 DB 中
我的网址配置如下:
url(r'^(?P<id>[0-9]+):(?P<slug>[-\w]+)$', TracksDetailView.as_view(), name="track-view"),
在我的 Podel 中,我有:
@models.permalink
def get_absolute_url(self):
return ('track-view', [str(self.id), str(self.slug)])
如果 2 个 slug 相同,我会收到以下错误:
get() returned more than one GPXTrack -- it returned 2! Lookup parameters were {}
我使用通用视图(DetailView)来渲染页面:
class TracksDetailView(DetailView):
model = GPXTrack
context_object_name = 'track'
知道如何避免这种情况不需要独特的蛞蝓?
【问题讨论】:
-
问题似乎不是 URL,而是获取 GPXTrack 的代码(并返回错误)。也许你最好表明这一点。
-
谢谢丹尼尔,我只是更新提供代码的问题
-
好吧,假设我是
id = 1523的用户,我创建了两个tracks(不管是什么),假设我同时命名了monkeyTrack,你的应用程序怎么知道我是哪一个?如果我访问yourApp.com/1/monkeyTrack,如果你想避免这个错误,你需要有唯一的 slug 或以某种方式限制用户! -
鉴于 id 是唯一的,我通过 id 而不是 slug 检索曲目:id 指的是曲目 id 而不是用户 id
标签: django url django-urls slug