There are a couple of problems here. First is that you don't actually use the args or kwargs, so it's better to have a signature like this:

```
def save(self, *args, **kwargs):
    super(Deactivation, self).save(*args, **kwargs)
    self.user.is_active = False
    self.user.save()
```

That way if the `save` signature ever changed for some reason, this code continues to work.

Further, this is kind of awkward--I wouldn't mark the user as not active in the save method. Amongst other things, if you create a deactivation, then save it, then later the user is reactivated, if we ever wanted to change anything on this model and re-save it, that has the side-effect of deactivating the user again. Not only that, but it'd be almost impossible to find this problem because all the data it generates continues to look "ok".

I'd switch the user deactivation to a separate method. Slightly less awkward might be this:

```
d = Deactivation()
d.deactivate(user_obj)
d.save()
```

That's only slightly less awkward because Deactivation is really just a log entry and probably shouldn't be the prime mover here. Maybe it makes more sense to have Deactivation just be a log entry and create a utility function in `kitsune.users.utils.py` like this:

```
def deactivate(moderator, user):
    """Deactivates a user and generates a log entry for it."""
    user.is_active = False
    user.save()
    Deactivation(user=user, moderator=moderator).save()
```

Then you can nix the save method in `Deactivation` because it becomes merely a data model.