¿Cómo anular la vista de Django que tiene un patrón de URL con espacio de nombre?

Estoy usando una aplicación externa llamada foo que es la que más me gusta, pero necesito extender la funcionalidad de una vista específica llamada Bar . Normalmente, solo pongo mi vista extendida en urls.py antes de include('foo.urls') y le include('foo.urls') el mismo nombre, de modo que el resolutor lo golpee primero:

 urlpatterns = [ ... url(r'^foo/path_to_bar$', CustomBar.as_view(), name='bar'), url(r'^foo/$', include('foo.urls')), ... ] 

El problema es que foo usa urls con espacios de nombre en todas partes, por lo que foo:bar hace referencia a la vista en cuestión y la statement include() anterior debería ser:

 include('foo.urls', namespace='foo', app_name='foo') 

Aparentemente, esto es excelente para aplicaciones de gran valor, pero me cuesta mucho encontrar la manera de anular esta vista en mi proyecto. ¿Hay algún medio para hacerlo, sin volver a escribir todas las llamadas a reverse() y los usos de {% url %} en foo ? Esto equivaldría esencialmente a forzar la aplicación y anular el propósito de reutilizar una vista en primer lugar.

No estoy seguro de entender el problema. {% url 'foo:foo' %} coincidirá con el patrón de url en la aplicación y devolverá /foo/path_to_bar/ . Esa URL se comparará con su patrón de URL personalizado. El nombre del patrón de URL de su vista personalizada no debería importar.

Eso no funcionará si la aplicación original utiliza una URL diferente a path_to_bar . En este caso, aún no tiene que cambiar todas las llamadas para reverse , solo cree su propio my_foo_urls.py , duplique el contenido de foo/urls.py lugar.