ı iki model, Kitap ve Sayfa var diyelim:Yönlendirme NesneSil jenerik görüntüsü bir nesne silindikten sonra
Ben bir sayfayı silmek için ve sayfa aitti belirli bir kitabın yönlendiriliyorum ihtiyaçclass Book(models.Model):
pass
class Page(models.Model):
book = models.ForeignKey(Book)
. Bunu başarmak için, ben sayfayı silmek için bir sınıf temelli bir görünüm olun:
class PageDeleteView(DeleteView):
model = Page
def get_success_url(self, **kwargs):
return reverse_lazy('book_detail', self.book.pk)
sorun get_success_url çağrılmadan önce nesne bu yöntem başarısız olur silinir beri, yani ve bir 404 hatası alıyorum.
Bunu nasıl yapabilirim?
Güncelleme: @DrTyrsa fikir ard
, bunu silme yöntemi geçersiz kılmasını elde ettik, bu yüzden aşağıdaki gibi sınıf olacaktır:
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 neden model = Book? Model = Sayfa olmamalı mı? – jpic
Haklısın, Jpic. 'Sayfa' demek istedim, bu yüzden düzeltdim. – jantoniomartin
Burada tembel geri dönüş yapmaya ihtiyacınız yok, eğer bir yöntemden "ters" diyorsanız, bu çağrı zaten "tembel" bir soruna yol açmayacak kadar yeterli. – DrTyrsa