1- from functools import partial
2-
3- from django .urls import reverse
41from django .utils .encoding import force_str
5- from django .utils .translation import gettext_lazy as _
62
73from ..utils import action_view_name , classproperty
84from .list import ListBreadcrumbMixin
95
106
11- def _detail_view_label (instance , format_string ):
12- return _ (force_str (format_string ) % {"instance" : force_str (instance )})
13-
14-
157class DetailBreadcrumbMixin (ListBreadcrumbMixin ):
168 # Home / object List / str(object)
17- detail_format_string = _ ( "%(instance)s" )
9+ detail_format_string = "%s"
1810
1911 @classproperty
2012 def detail_view_name (self ):
@@ -32,21 +24,18 @@ def __detail_view_name(self):
3224 )
3325
3426 def detail_view_url (self , instance ):
35- if self .breadcrumb_use_pk :
36- return reverse (
37- self .__detail_view_name , kwargs = {self .pk_url_kwarg : instance .pk }
38- )
39-
40- return reverse (
41- self .__detail_view_name ,
42- kwargs = {self .slug_url_kwarg : getattr (instance , self .slug_field )},
43- )
27+ return instance .get_absolute_url ()
28+
29+ def detail_view_label (self , instance ):
30+ if self .detail_format_string :
31+ return self .detail_format_string % force_str (instance )
32+ return force_str (instance )
4433
4534 @property
4635 def crumbs (self ):
4736 return super (DetailBreadcrumbMixin , self ).crumbs + [
4837 (
49- partial ( _detail_view_label , format_string = self .detail_format_string ) ,
38+ self .detail_view_label ,
5039 self .detail_view_url ,
5140 ),
5241 ]
0 commit comments