Поместите имя пользователя в change_reason при удалении с помощью SafeDeleteModel
Я использую django-simple-history и SafeDeleteModel
Однако имя удалителя не хранится в _change_reason
и каким-то образом override delete is called вызывается дважды.
stdout выглядит так, второй call не имеет идентификатора пользователя.
delete override:{"user": 12}
delete override:None
Как я могу его сделать?
class BaseModel(AuditableModel, SafeDeleteModel):
_safedelete_policy = SOFT_DELETE_CASCADE
objects = DeletedInvisiableManager()
class Meta:
abstract = True
def save(self, operator: str = None, **kwargs):
self._change_reason = operator
return super().save(**kwargs)
def delete(self,operator: str = None,**kwargs):
print("override delete is called {0}".format(operator))
self._change_reason = operator
return super().delete(**kwargs)
Отсюда вызывается функция удаления.
class MyObjDeleteView(LoginRequiredMixin, DeleteView):
model = MyObj
success_url = reverse_lazy('my-obj-list')
def delete(self,request, *args, **kwargs):
self.object = self.get_object()
success_url = self.get_success_url()
self.object.delete(get_operator_from_user(self.request.user))
return HttpResponseRedirect(success_url)