2011-04-25 7 views
8

अगर यह संभव हो गया था जब आप Django 1.3 में एक DetailView उपयोग कर रहे हैं एक pk या स्लग के अलावा कुछ का उपयोग करने के मैं सोच रहा था के लिए pk या स्लग के अलावा कुछ निर्दिष्ट करने के लिए कैसे।DetailView

उदाहरण के लिए, मैं वर्तमान में है:

url(r'^mymodel/(?P<pk>\d+)/$', MyDetailView.as_view()) 
मेरी यूआरएल के रूप में

। मान लें कि मुझे कुछ चाहिए:

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

जहां मॉडल मॉडल में एक फ़ील्ड होगा। क्या वैसे भी विस्तार दृश्य देखने के लिए है कि मैं जिस ऑब्जेक्ट को चाहता हूं उसे 'पकड़ो' और इसे मेरे टेम्पलेट पर पास कर दूं?

उत्तर

13

डीगलो में एक स्लग का कोई विशेष महत्व नहीं है। यह सिर्फ उस क्षेत्र के लिए एक नाम है जो एक पंक्ति की पहचान करता है। यदि आपके स्लग को कुछ और कहा जाता है, उदाहरण के लिए name, तो बस अपने दृश्य उपclass में slug_field विशेषता के रूप में name निर्दिष्ट करें।

यदि आपको कुछ और जटिल की आवश्यकता है, तो आप व्यू क्लास में हमेशा get_object ओवरराइड कर सकते हैं।

+0

ओवरराइडिंग I मुझे बस इतना करना है। धन्यवाद! –

+1

यह भी ध्यान दें कि आपकी यूआरएल लाइन इस तरह दिखनी चाहिए: url (r '^ mymodel/(? पी \ d +)/$', MyDetailView.as_view()) – mpaf

+0

आप 'slug_url_kwarg' को' slug_field' के अतिरिक्त सेट कर सकते हैं ताकि वह आपका नाम पैरामीटर "स्लग" नहीं है क्योंकि उपयोगकर्ता mpaf सुझाया गया है। – pymarco

0

आप विशेषता "pk_url_kwarg"


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" 

संदर्भ दृश्य यूएमएल डिजाइन के लिए उपयोग कर सकते हैं http://epydoc.pythondiary.com/generic-views/ (विवरण दृश्य पर क्लिक करें)

संबंधित मुद्दे