Как переопределить Django DeleteView без использования абстрактной модели и менеджера
Я пытаюсь мягко удалить запись из моей БД, переопределив метод delete в DeleteView, но это не работает. Атрибут active должен быть установлен в False. Я не могу использовать Abstract model и Manager, потому что моя родительская модель изначально должна иметь атрибут active. мое представление
class PersonDeleteView(DeleteView):
model = Person
template_name = 'contacts/deleteperson.html'
success_url = reverse_lazy('persons')
def delete(self, *args, **kwargs):
self.object = self.get_object()
self.object.active = False
return HttpResponseRedirect(self.get_success_url())
родительская модель
class AddressEntry(models.Model):
GENDER = (
('Male', 'Male'),
('Female', 'Female'),
)
gender = models.CharField( max_length= 20, choices=GENDER, default='Male')
name = models.CharField(max_length=100)
firstname = models.CharField(max_length=100)
birthdate = models.DateField()
active = models.BooleanField(default=True)
def __str__(self):
return self.name
def soft_delete(self):
self.active = False
self.save()
детская модель
class Person(AddressEntry):
parentname = models.CharField(max_length=100)
job = models.CharField(max_length=100)
Пытались ли вы сохранить экземпляр после его изменения?
def delete(self, *args, **kwargs):
self.object = self.get_object()
self.object.active = False
self.object.save()
return HttpResponseRedirect(self.get_success_url())