I don't like have "opts" as an argument since it's `model._meta` which isn't considered a stable API. I think we can use `self.model._meta.get_field()` here instead?