0

In Django 1x I can do URLs with two ids in the URL like this:

url.py

('^profile/(?P<cpk>[0-9]+)/env/(?P<envid>[0-9]+)/$', views.EnvironmentDetailView.as_view(), name='environment'),

HTML template

"{% url 'myapp:environment' cpk=environment.client.id envid=environment.id %}"

models.py

class Environment(models.Model):
    ...
    ...
    def get_absolute_url(self):
            return reverse('myapp:envmanager', args =[self.client.pk])

views.py

class EnvironmentDetailView(generic.DetailView):
    '''Detail view of environment'''
    model = Environment
    pk_url_kwarg ="envid"
    template_name = 'myapp/environment.html'

But when I upgraded to Django 2.0 I tried:

urls.py

path('profile/<int:client_id>/env/<int:pk>/', views.EnvironmentDetailView.as_view(), name='environment'),

html templates

"{% url 'myapp:environment' client_id=environment.client.id pk=environment.id %}"

views.py

class EnvironmentDetailView(generic.DetailView):
    '''Detail view of environment'''
    model = Environment
    pk_url_kwarg ="environment_id"
    template_name = 'myapp/environment.html'

and got this error

AttributeError: Generic detail view EnvironmentDetailView must be called with either an object pk or a slug.

How do you properly reference URL links with two id?

ccsv
  • 8,188
  • 12
  • 53
  • 97

0 Answers0