title: Django NoReverseMatch Reverse for DetailView
body: <p>My application is throwing an error when I redirect back to a detail view in Django 1.5.</p>
  
  <blockquote>
    <p>NoReverseMatch: Reverse for 'InventoryPlotDetailView' with arguments
    '(3,)' and keyword arguments '{}' not found.</p>
  </blockquote>
  
  <p>It's getting the correct forestinventoryplot_id, but it seems that the detail view doesn't know how to handle the argument.  If I access the detail view manually (<code>http://[server]/geoapp/inventory_plot/detail/3/</code>), it works as expected. Below are the relevant bits and pieces, any advice?</p>
  
  <p><strong>Views.py:</strong></p>
  
  <pre><code>class InventoryPlotDetailView(DetailView):
      queryset = ForestInventoryPlot.objects.all()
      template_name = 'geoapp/forestinventoryplot_detail.html'
      context_object_name = 'plot_detail'
  
  def InventoryDataAdd(request, forestinventoryplot_id=1):
      if request.method == 'POST': 
          form = InventoryDataForm(request.POST) 
          if form.is_valid(): 
              new_data = form.save()          
              return HttpResponseRedirect(reverse('geoapp:InventoryPlotDetailView', args=(new_data.forestinventoryplot_id,)))
      else: 
          initial_data = {'forestinventoryplot' : forestinventoryplot_id}
          form = InventoryDataForm(initial=initial_data)    
          return render(request, 'geoapp/forestinventorydata_add.html', {'form': form})
  </code></pre>
  
  <p><strong>urls.py:</strong></p>
  
  <pre><code>urlpatterns = patterns('',
      url(r'^index$', views.Index),
      url(r'^$', views.Index),
      url(r'^inventory_plot/add/$', views.InventoryPlotAdd, name='inventory_plot_add'),
      url(r'^inventory_plot/edit/(?P&lt;forestinventoryplot_id&gt;\d+)$', views.InventoryPlotEdit, name='inventory_plot_edit'),
      url(r'^inventory_plot/delete/(?P&lt;pk&gt;\d+)$', views.InventoryPlotDelete, name='inventory_plot_delete'),
      url(r'^map/$', views.map_page),
      url(r'^map2/$', views.map2_page),
      url(r'^inventory_plot/$', views.InventoryPlotListView.as_view(), name='inventory_plot_list'),
      url(r'^inventory_plot/detail/(?P&lt;pk&gt;\d+)/$', views.InventoryPlotDetailView.as_view(), name='plot_detail'),
      url(r'^inventory_data/add/$', views.InventoryDataAdd, name='inventory_data_add'),
      url(r'^inventory_plot/(?P&lt;forestinventoryplot_id&gt;\d+)/add_data/$', views.InventoryDataAdd, name='inventory_data_add'),
      url(r'^accounts/login/$', 'django.contrib.auth.views.login'),
      url(r'^accounts/logout/$', views.logout_view),
      url(r'^home/$', views.Home, name = 'home'),
      url(r'^inventory_data/add/(?P&lt;forestinventoryplot_id&gt;\d+)/$', views.InventoryDataAdd, name='inventory_data_addition'),
    )
  </code></pre>
  
  <p><strong>Models.py:</strong></p>
  
  <pre><code>class ForestInventoryPlot(models.Model):
      forestinventoryplot_id = models.AutoField(primary_key=True)
      plot_area_ft2 = models.DecimalField(null=True, blank=True, max_digits=5, decimal_places=1)
      plot_radius_ft = models.DecimalField(max_digits=4, decimal_places=1, blank=True, null=True)
      plot_length_x_ft = models.DecimalField(max_digits=4, decimal_places=1, blank=True, null=True)
      plot_length_y_ft = models.DecimalField(max_digits=4, decimal_places=1, blank=True, null=True)
      plot_geometry = models.CharField(max_length=30, null=True, blank=True)
      geometry = models.PointField(srid=4326, null=True, blank=True)
      elevation = models.IntegerField(null=True, blank=True)
      position_description = models.CharField(max_length=255, null=True, blank=True)
      plot_create_date = models.DateField(null=True, blank=True)
      created_by = models.CharField(max_length = 100)
      objects = models.GeoManager()
      class Meta:
              db_table = 'forest_inventory_plot'
              ordering = ["forestinventoryplot_id"]
      def __unicode__(self):
          return unicode(self.forestinventoryplot_id)
  
  class ForestInventoryData(models.Model):
      forestinventorydata_id = models.AutoField(primary_key=True)
      forestinventoryplot = models.ForeignKey('ForestInventoryPlot', null=True, blank=True)
      tree = models.ForeignKey('Tree', null=True, blank=True)
      collection_date = models.DateField(null=True, blank=True)
      species = models.CharField(max_length=30, null=True, blank=True)
      dbh_in = models.DecimalField(max_digits=4, decimal_places=1, blank=True, null=True)
      height_ft = models.DecimalField(max_digits=4, decimal_places=2, blank=True, null=True)
      class Meta:
          db_table = 'forest_inventory_data'
          ordering = ["forestinventorydata_id"]
      def __unicode__(self):
          return unicode(self.forestinventorydata_id)
  </code></pre>