चलो कहते हैं कि मैं दो मॉडल, पुस्तक और पृष्ठ करते हैं:पुनर्निर्देशन माता-पिता के लिए DeleteObject सामान्य दृश्य के साथ एक वस्तु को हटाने के बाद
class Book(models.Model):
pass
class Page(models.Model):
book = models.ForeignKey(Book)
मैं एक पृष्ठ हटाने के लिए और विशिष्ट पुस्तक ले जाया जा रहा है कि पेज के थे की जरूरत है । इस लक्ष्य को हासिल करने के लिए, मैं पृष्ठ हटाने के लिए एक वर्ग आधारित दृश्य बनाना:
class PageDeleteView(DeleteView):
model = Page
def get_success_url(self, **kwargs):
return reverse_lazy('book_detail', self.book.pk)
समस्या से पहले get_success_url कहा जाता है कि, के बाद से वस्तु हटा दी जाती है, इस विधि विफल रहता है, और मैं एक 404 त्रुटि मिलता है।
मैं यह कैसे कर सकता हूं?
अद्यतन:
@DrTyrsa के विचार के बाद, मैं इसे हटाना विधि अधिभावी हासिल किया है, तो वर्ग के रूप में निम्नानुसार होगा:
reverse_lazy = lambda name=None, *args : lazy(reverse, str)(name, args=args)
class PageDeleteView(DeleteView):
model = Page
def get_success_url(self, **kwargs):
return reverse_lazy('book_detail', self.book.pk)
def delete(self, request, *args, **kwargs):
self.book_pk = self.get_object().book.pk
return super(PageDeleteView, self).delete(request, *args, **kwargs)
PageDeleteView में मॉडल = पुस्तक क्यों है? यह मॉडल = पेज नहीं होना चाहिए? – jpic
आप सही हैं, जेपीआईसी। मेरा मतलब 'पेज' था, इसलिए मैंने इसे ठीक कर दिया है। – jantoniomartin
यदि आपको किसी विधि से 'रिवर्स' कहा जाता है, तो आपको आलसी रिवर्सिंग की आवश्यकता नहीं है, यह कॉल पहले से ही "आलसी" है जो किसी भी समस्या का कारण नहीं है। – DrTyrsa