2016-04-23 6 views
1

Ich habe ein Modell, das eine UUIDField hat und wenn ich folgende verwenden `django wie mit einem UUID Feld verwendet get_absolute_url

<h3> 
<a href="{{ box.get_absolute_url }}">{{ box.title }}</a> 
</h3>` 

Ich erhalte diesen Fehler Reverse for 'detail_box' with arguments '(UUID('29eec708-4ee6-4999-838d-712441876ac7'),)' and keyword arguments '{}' not found. 0 pattern(s) tried: []

models.py

urls.py

urlpatterns = [ 
    url(r'^detail/(?P<slug>[0-9A-Za-z-]+)/$', views.detail_box, name='detail_box'), 
    ... 
] 

mein views.py

def detail_box(request, slug): 
    boxes = get_object_or_404(Box, slug=slug) 
    return render(request, 'suggies/detail.html', {'boxes':boxes}) 

Antwort

1

In Ihrem get_absolute_url Verfahren wandeln die UUID Instanz str. So etwas sollte funktionieren.

def get_absolute_url(self): 
    return reverse('suggies:detail_box', args=[str(self.slug)]) 
+0

Danke # v1k45! Auch im Modell ist es vorzuziehen, die UUID zu stringieren. ie 'str (uuid.uuid4)', um den Fehler zu vermeiden, den ich in der Vorlage bekommen habe. –

+0

Nein, das ist nicht nötig. Django wird das intern für dich tun. '{{obj.slug}}' rendert Ihre UUID in Ihrer Vorlage. – v1k45

+0

Danke für die Info! –

Verwandte Themen