Custom lookups registered through `register_lookup` are only used for any field *if* you register them to `Field`. If you register them to `HStoreField` they do not. If you do `HStoreField.register_lookup` it is added just for `HStoreField`, not for any other field. If you use the `get_lookup` approach like this, you are actually stopping other people as easily changing the lookups on `HStoreField`.

Note that the implementation of `_get_lookup` means that we look up the MRO of the field, so the slightly scary resetting of `cls.class_lookups` to `{}` isn't a problem.

If you find this is not working, then there is a bug in how `register_lookup` is written. The idea of overriding `get_lookup` is to do dynamic situations, like you can see in https://github.com/django/django/pull/2485