`ForeignKey`s on django have the attribute [on\_delete](https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.on_delete) to specify the behavior when the referenced object is deleted. Is there any way to get something similar for [ManyToManyField](https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ManyToManyField)?

Suppose I have the following model

```
class House(models.Model):
    owners = models.ManyToManyField(Person)

```

The default behavior is to cascade, so if I delete a person that happens to own a house, it just vanishes from owners (that is, obviously, it no longer owns any houses). What I'd like to have is that if a person is an owner, it can not be deleted. That is, I want `on_delete=models.PROTECT`. Is this possible?

I know internally `ManyToManyField` is translated to another model with two `ForeignKey`s (in this case one to house and one to person), so it should be possible to achieve this. Any ideas how to? I'd like to avoid setting the [through](https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ManyToManyField.through) attribute to a new model, because this would result in a new table (I'd like to keep the old one). 

Edit: I've tracked where django creates the appropriate m2m model:

```
def create_many_to_many_intermediary_model(field, klass):
    from django.db import models
    # ... 
    # Construct and return the new class.
    return type(name, (models.Model,), {
        'Meta': meta,
        '__module__': klass.__module__,
        from_: models.ForeignKey(klass,
                                 related_name='%s+' % name,
                                 db_tablespace=field.db_tablespace),
        to: models.ForeignKey(to_model,
                              related_name='%s+' % name,
                              db_tablespace=field.db_tablespace)
    })

```

The relevant line is 

```
to: models.ForeignKey(to_model,
                      related_name='%s+' % name,
                      db_tablespace=field.db_tablespace)

```

I'd like it to be 

```
to: models.ForeignKey(to_model,
                      related_name='%s+' % name,
                      db_tablespace=field.db_tablespace,
                      on_delete=models.PROTECT)

```

Any way to do this other than monkey patching the whole thing and creating a new class for ManyToManyField?