Я понимаю вашу проблему. Вы можете легко решить эту проблему при ajax успешном вызове.
Вам нужно просто скрыть и показать, используя jquery или javascript.
Допустим, пользователь уже сказал имеет профиль pi c, и пользователь нажимает на опцию удаления, и ajax вызов успешен, тогда вы должны скрыть опцию удаления. (вы также можете удалить его, но позже вам придется создать его через javascript)
$(".delete").click(function () {
$('.loading').show();
var url = "{% url 'user-profile-image-delete' %}";
$.ajax({
type: 'POST',
url: url,
data: $("#new_form").serialize(),
cache: false,
success: function (data, status) {
$('#imagePreview').css('background-image', 'url('+'{% static 'assets/img/user-64x.png' %}'+')');
if (data['status'] == "success") {
//$(".delete").hide(); // this will hide your delete option
//Instead of hiding we are now removing the button then generating the button dynamically via javascript.
$(".delete").remove();
// But note one thing if we use class then it will hide/delete all elements with class of delete. so it's better to use id for unique elements.
}
else {
toastr.error(data.msg);
}
}
});
});
Для другого случая, когда нет профиля pi c и пользователь обновляет профиль pi c затем вы должны создать выпадающее меню и добавить его в выпадающий список.
$("#profile-pic-upload").change(function () {
var input_detail = this;
var data = new FormData();
var file = this.files[0];
data.append("file", file);
$.ajax({
type: 'POST',
data: data,
contentType: false,
processData: false,
url: $("#profile-file-upload").data('action'),
cache: false,
success: function (data, status) {
if (data['status'] == true) {
toastr.success(data.msg);
$(".delete").remove();
let dropdown_menu_item = '<a class="dropdown-item delete" href="javascript:" style="font-size : 14px;">Delete</a>'
$('.dropdown-menu').append(dropdown_menu_item);
var randomId = new Date().getTime();
$('#imagePreview').css('background-image', 'url(' + data.profile_pic + '?random=' + randomId + ')');
}
else {
toastr.error(data.msg);
}
}
});
});
это должно сработать, но я думаю, что вы должны обработать это отображение или скрыть раскрывающийся список, используя javascript, проверив сначала, если профиль pi c обновляется, если отображается кнопка удаления, иначе скрывается кнопка удаления, а когда пользователь обновляет профиль pi c, отображается кнопка удаления.