Value not saved when an alias (column_name) used
Adding a second field like that is most definitely "undefined behavior" and not advisable. If you want something like this (for some reason), it should be done in Python as perhaps a property. Your example doesn't make clear what the intended goal you were going for, but let's say you wanted something like a normalized accessor to some email field:

```python
class User(Model):
    email = TextField()

    @property
    def normalized_email(self):
        return self.email.lower()
```

Also check out hybrid properties, which provide a similar abstraction that can work at the SQL level as well. Docs: http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#hybrid

Above example:

```python
class User(Model):
    email = TextField()

    @hybrid_property
    def normalized_email(self):
        return self.email.lower()

    @normalized_email.expression
    def normalized_email(cls):
        return fn.LOWER(cls.email)

# Allows things like:
query = User.select().where(User.normalized_email == 'foo@example.com')
# Corresponding to, e.g.:
# select * from user where lower(email) = 'foo@example.com'
``` Intended goal was to use two different field names for same database field.
If this has some kind of "undefined behaviour", then, this should be either forbidden (like with error), or maybe at least warned somehow. 
It does select() etc, but saving does not work and the cause is hard to determine/notice.

"undefined behaviour"s should be avoided as much as possible. 
Anyway, thanks for this nice ORM library/utility. >Intended goal was to use two different field names for same database field.

To what end? I guess what I'm saying is it sounds like you have a kludge and are unable or unwilling to let go of it. I'm just trying to provide you feedback, so that you can improve your product/software. Nothing else.
If I have done wrong by providing you some feedback and reporting an "unexpected behaviour", then, sorry !!
```
>>> class Test(BaseModel):
...     test1 = DecimalField(constraints=[SQL("DEFAULT 0.00")], null=True)
...     class Meta:
...         table_name = 'test'
...
>>>
>>>
>>> Test.create_table()
>>> Test.insert(test1=12).execute()
1
>>> a=Test[1]
>>> a.test1=20;
>>> a.save()
1
>>> a=Test[1]
>>> a.test1
Decimal('20.00000')
```

Up to now, normal, correct. 

Lets define an alias (2nd field) for test1 field:

```
class Test(BaseModel):
    test1 = DecimalField(constraints=[SQL("DEFAULT 0.00")], null=True)
    test2 = DecimalField(constraints=[SQL("DEFAULT 0.00")], null=True, column_name='test1')
    class Meta:
        table_name = 'test'

>>> a=Test[1]
>>> a.test1=30
>>> a.save()
0
>>>
```

So, that entity unchanged. 
I am not sure if this is an intended behaviour, but, it is obviously misleading. 
I encountered this during dealing with a bug and  this was the issue. it was not saving the value. 

