Question: Is there a way to use one field to set another field when the create method is used?
I think I got there:

```
  @classmethod
  def create(cls, **query):
      query['email_lower'] = query["email"].lower()
      return super(Users, cls).create(**query)
```

@coleifer, is there any reason to use signals over this way of doing it? The proper way to do this would probably be to just create an index on the lower-case version of the email, since I assume you only are using it for uniqueness or querying.

```sql
create unique index "user_email_lower" on users(lower(email))
```

If you really want to have it in its own field, then I'd override the `save()` method.

```python
def save(self, *args, **kwargs):
    self.email_lower = self.email.lower()
    return super(...).save(*args, **kwargs)
```
There are multiple uses of the `Users.create(email=X)` method in our codebase. Is there any way to modify the Users class or override the create method to make a field `email_lower` get set to another field that is always passed in (`email`)?

I've tried:

```
def create(self, **kwargs):
        super().create(email_lower=kwargs["email"].lower(), **kwargs)
```

but I think that this doesn't work because the object isn't instantiated before the `create` method on the subclass is called.

I also tried this:

```    
def __init__(self, **kwargs):
        super(Users, self).__init__(email_lower=kwargs["email"].lower(), **kwargs)
```

but it didn't work either.