1
У меня есть модель, которая имеет UUIDField
и когда я использую следующий `Джанго, как использовать get_absolute_url с UUID поле
<h3>
<a href="{{ box.get_absolute_url }}">{{ box.title }}</a>
</h3>`
Я получаю эту ошибку Reverse for 'detail_box' with arguments '(UUID('29eec708-4ee6-4999-838d-712441876ac7'),)' and keyword arguments '{}' not found. 0 pattern(s) tried: []
models.py
@python_2_unicode_compatible
class Box(TimeStampModel):
"""
Box model
"""
def __str__(self):
return self.title
title = models.CharField(max_length=40, blank=True, null=True)
identify = models.BooleanField(default=False)
activate = models.BooleanField(default=False)
slug = models.UUIDField(default=uuid.uuid4, editable=False)
activation_key = models.UUIDField(default=uuid.uuid4, editable=False)
def get_absolute_url(self):
return reverse('suggies:detail_box',
args=[self.slug]
)
urls.py
urlpatterns = [
url(r'^detail/(?P<slug>[0-9A-Za-z-]+)/$', views.detail_box, name='detail_box'),
...
]
мой views.py
def detail_box(request, slug):
boxes = get_object_or_404(Box, slug=slug)
return render(request, 'suggies/detail.html', {'boxes':boxes})
Thanks # v1k45! Также в модели предпочтительнее укрепить uuid. i.e 'str (uuid.uuid4)', чтобы избежать ошибки, которую я получил в Шаблоне. –
Нет, нет необходимости. Django сделает это для вас внутренне. '{{obj.slug}}' будет отображать ваш uuid в вашем шаблоне. – v1k45
Спасибо за информацию! –