Django DeleteView only works on second attempt
Question:
Bit of a strange one and wondering if anyone else here has come across this.
I have a standard DeleteView with the GET showing a confirmation page containing a form that posts to the delete view.
Whenever I click confirm nothing happens – the post to the view occurs and it redirects as intended, however the object is not deleted.
If I then perform the action a second time the object is deleted.
class MetricDeleteView(DeleteView):
template_name = "dashboard/administration/metric/delete.html"
button_title = "Update metric"
form_class = MetricUpdateForm
model = dashboard_metric
@cached_property
def dashboard_score(self):
return self.get_object().score
def get_success_url(self):
return reverse_lazy("administration:dashboard:update_score", kwargs={
'dashboard': self.dashboard_score.dashboard.id,
'pk': self.dashboard_score.id
})
I can’t for the life of me figure out why this is occurring across all some models on my site.
Answers:
Hm, interesting. As the view is generic, have you looked at the model to check it doesn’t override the delete functionality? Perhaps it doesn’t delete on the first pass and sets a variable to ‘deleted’ instead, especially if you’re working with syncing across platforms. WatermelonDB, for instance. Nathan. 😀
Bit of a strange one and wondering if anyone else here has come across this.
I have a standard DeleteView with the GET showing a confirmation page containing a form that posts to the delete view.
Whenever I click confirm nothing happens – the post to the view occurs and it redirects as intended, however the object is not deleted.
If I then perform the action a second time the object is deleted.
class MetricDeleteView(DeleteView):
template_name = "dashboard/administration/metric/delete.html"
button_title = "Update metric"
form_class = MetricUpdateForm
model = dashboard_metric
@cached_property
def dashboard_score(self):
return self.get_object().score
def get_success_url(self):
return reverse_lazy("administration:dashboard:update_score", kwargs={
'dashboard': self.dashboard_score.dashboard.id,
'pk': self.dashboard_score.id
})
I can’t for the life of me figure out why this is occurring across all some models on my site.
Hm, interesting. As the view is generic, have you looked at the model to check it doesn’t override the delete functionality? Perhaps it doesn’t delete on the first pass and sets a variable to ‘deleted’ instead, especially if you’re working with syncing across platforms. WatermelonDB, for instance. Nathan. 😀