मेरे पास स्लग फ़ील्ड के साथ दो मॉडल हैं:
कक्षा पुस्तक (models.Model): Name = models.CharField (max_length = 200) slug = models.SlugField () वर्ग लेखक (models.Model): name = models.CharField (max_length = 200) slug = models.SlugField () मैं उन्हें प्रथम-स्तरीय पथ पर मैप करना चाहता हूं:
(r '^ (? P & lt; slug & gt; [a-zA-z0-9 _-] +) / $ ',' Book_detail '), (आर' ^ (? पी एंड एलटी; स्लग & gt; [a-zA-Z0-9 _-] +) / $ ',' author_detail '), क्या है एक ही फ़ंक्शन का उपयोग किए बिना इसे पूरा करने का सबसे अच्छा तरीका और या तो पुस्तक या लेखक को स्लग पर आधारित लौटने के लिए।
इसे सबसे अच्छा तरीका इसे दृश्य में विभाजित करना होगा:
r '^ (? पी & lt; मॉडल & gt; [a-zA-Z0-9 _-] +) / (? पी & lt; slug & gt मॉडल, स्लग): प्रयास करें: मॉडल = {'पुस्तक': पुस्तक, 'लेखक': लेखक} [मॉडल] KeyError को छोड़कर: Http404 आइटम बढ़ाएं = get_object_or_404 (मॉडल, slug = slug) do_something_with (आइटम) ... संपादित करें: ओह, उस तरह से फ्लैट ... यह होगा:
(r '^ (? P & lt; slug & gt; [a-zA-z0-9 _-] +) / $', 'universal_detail'), डीआरफ़ universal_detail (अनुरोध, स्लग): प्रयास करें : Book = Book.objects.get (slug = slug) book.DoesNotExist को छोड़कर book_detail (अनुरोध, पुस्तक) रिटर्न: लेखक = लेखक। पुस्तकें (स्लग = स्लग) लेखक लेखक को छोड़कर author_details (अनुरोध, लेखक) रिटर्न DoesNotExist: एचटीटीपी 404 डीईएफ़ बुक-डिटेल्स (अनुरोध, बुक) बढ़ाएं: # नोट कि किताब एक किताब उदाहरण है जो पास
Comments
Post a Comment