我想通过它的pk字段访问我的模型,当它是一个uuid表示。我收到404 on this address
http://localhost:8002/box/6d99a390-5a8a-41e6-8fbf-84a2bb7a8e0f`的年龄错误
我有这个配置
def get_box(request, pk):
"""
Retrieve the object
"""
box = get_object_or_404(Box, pk=pk)
return render(
request,
'boxes/box.html',
{'box':box}
)
和我的models.py
@python_2_unicode_compatible
class Box(models.Model):
"""
Box model
"""
def __str__(self):
return self.title
id = models.UUIDField(primary_key=True,
default=uuid.uuid4, editable=False)
title = models.CharField(max_length=40, blank=True, null=True)
和我的urls.py
...
url(r'^box/(?P<pk>[0-9A-Za-z]+)/$', views.get_box, name='box'),
...
答案 0 :(得分:4)
问题不是查询,而是URL。你的正则表达式只匹配字母数字字符,但uuid也包含破折号;你应该在模式中包括那些:
r'^box/(?P<pk>[0-9A-Fa-f-]+)/$'
(另请注意,字符只能是f到f,而不是a到z。)