2011-04-25 2 views
8

Django 1.3에서 DetailView를 사용할 때 pk 또는 슬러그 이외의 것을 사용할 수 있는지 궁금합니다.DetailView에 pk 또는 slug 이외의 것을 지정하는 방법

예를 들어, 내가 현재 가지고 내 URL로

url(r'^mymodel/(?P<pk>\d+)/$', MyDetailView.as_view()) 

. 다음과 같이 말하고 싶습니다.

url(r'^mymodel/(?P<name>\d+)/$', MyDetailView.as_view()) 

여기서 name은 모델의 필드입니다. DetailView를 사용하여 원하는 객체를 '잡아 내 템플릿에 전달'할 수 있습니까?

답변

13

슬러그는 장고에서 특별한 의미가 없습니다. 행을 식별하는 필드의 이름입니다. 귀하의 슬러그가 다른 것으로 불리는 경우 (예 : name),보기 서브 클래스에 slug_field 속성으로 name을 지정하면됩니다.

더 복잡한 것이 필요한 경우에는 언제든지보기 클래스에서 get_object을 무시할 수 있습니다.

+0

i를 재정의 내가 여기서해야 할 모든 것. 감사! –

+1

또한 url 행은 다음과 같아야합니다. url (r '^ mymodel/(? P \ d +)/$', MyDetailView.as_view()) – mpaf

+0

'slug_field' 이외에'slug_url_kwarg'를 설정할 수 있습니다. 당신의 명명 된 매개 변수는 사용자 mpaf가 제안한 것처럼 "슬러그"하지 않습니다. – pymarco

0

당신은 http://epydoc.pythondiary.com/generic-views/ (상세보기 클릭) 속성 "pk_url_kwarg"참조보기 UML 설계를위한


urls.py

url(r'^mymodel/(?P<name>\d+)/$', MyDetailView.as_view()) 


views.py

class MyDetailView(LoginRequiredMixin, DetailView): 
    model = ModelName 
    pk_url_kwarg = "name" # primary key(to identify object uniquely) 
    template_name = "template.html" 

을 사용할 수 있습니다

관련 문제