2016-06-11 11 views
0

Ich versuche, allgemeine Bearbeitungsansichten wie dargestellt here zu implementieren:DJANGO Generische Ansichten: Wie reverse() in get_absolute_url Methode zu verwenden?

Ich begann mit der CreateView, die Daten richtig rendert und übermittelt. Ich erhalte jedoch einen Fehler, wenn ich versuche, reverse() zu verwenden, um zur Detailansichtsseite für das neue Objekt zurückzukehren.

Hier ist meine Fehlermeldung:

NoReverseMatch bei/Arbeit/clients// umge schaffen für 'ClientDetailView' mit Argumenten '(' 14' ,)‘und Keyword-Argumente '{}' nicht gefunden . 0 Muster (n) versucht: []

Hier ist, wie ich definiert get_absolute_url() in meinem Modell:

def get_absolute_url(self): 
    return reverse('ClientDetailView', kwargs={'pk': self.pk}) 

Meine Ansicht heißt ClientDetailView. Ich bin mir nicht sicher, welche anderen Informationen hilfreich wären.

Hier ist die Klasse ClientDetailView:

class ClientDetailView(generic.DetailView):  
    model = Client 
    template_name = 'work/client_detail.html'` 

und hier ist url() von urls.py:

url(r'^clients/(?P<pk>[0-9]+)/$', views.ClientDetailView.as_view(), name='clients_detail'),` 

Kann mir jemand erklären, was ich falsch mache?

Antwort

0

Ich löste mein eigenes Problem. Ich hatte den Namespace auf der Rückseite() -Methode hinzuzufügen:

return reverse('work:clients_detail', kwargs={'pk': self.pk}) 

Ich würde mich freuen, wenn jemand anderes könnte erklären, warum ich das tun musste.

Hier ist die meine komplette urls.py: von django.conf.urls import url

from . import views 

app_name = 'work' 
urlpatterns = [ 
    url(r'^work_orders/$', views.WorkOrdersIndexView.as_view(), name='quotes_index'), 
    url(r'^work_orders/(?P<pk>[0-9]+)/$', views.WorkOrdersDetailView.as_view(), name='work_orders_detail'), 
    url(r'^quotes/$', views.QuotesIndexView.as_view(), name='quotes_index'), 
    url(r'^quotes/(?P<pk>[0-9]+)/$', views.QuotesDetailView.as_view(), name='quotes_detail'), 
    url(r'^project/(?P<pk>[0-9]+)/$', views.ProjectDetailView.as_view(), name='project_detail'), 
    url(r'^project/create/$', views.ProjectCreateView.as_view(), name='project_create'), 
    url(r'^project/(?P<pk>[0-9]+)/update/$', views.ProjectUpdateView.as_view(), name='project_update'), 
    url(r'^project/(?P<pk>[0-9]+)/delete/$', views.ProjectDeleteView.as_view(), name='project_delete'), 
    url(r'^clients/$', views.ClientView.as_view(), name='client_index'), 
    url(r'^clients/(?P<pk>[0-9]+)/$', views.ClientDetailView.as_view(), name='clients_detail'), 
    url(r'^clients/create/$', views.ClientCreateView.as_view(), name='client_create'), 
    url(r'^clients/(?P<pk>[0-9]+)/update/$', views.ClientUpdateView.as_view(), name='clients_update'), 
    url(r'^clients/(?P<pk>[0-9]+)/delete/$', views.ClientDeleteView.as_view(), name='clients_delete'), 


] 
+1

Ohne Ihre urls.py Datei (en) ist schwer zu sagen. Es könnte auch sein, dass die Korrektur von "reverse" ('ClientDetailView' ... 'zu' reverse ('clients_detail', 'hätte reichen können). – tobltobs

+0

@tobttobs Ich habe meine urls.py-Datei zum Hauptkommentar hinzugefügt. –

+0

Do Sie fügen diese Datei woanders hinzu, zB in einer Core-App? Haben Sie mit "reverse" ('clients_detail', .. '? – tobltobs

0

tatsächlich versuchen Sie, um die Ansicht zu umkehren, statt ClientDetailView Verwendung url Namen clients_detail

Verwandte Themen