diff --git a/tests/testapp/models/__init__.py b/tests/testapp/models/__init__.py index 0fab0839225..baa048d123f 100644 --- a/tests/testapp/models/__init__.py +++ b/tests/testapp/models/__init__.py @@ -1,4 +1,4 @@ __all__ = ['basic', 'repr', 'custom_methods', 'many_to_one', 'many_to_many', 'ordering', 'lookup', 'get_latest', 'm2m_intermediary', 'one_to_one', 'm2o_recursive', 'm2o_recursive2', 'save_delete_hooks', 'custom_pk', - 'subclassing', 'many_to_one_null'] + 'subclassing', 'many_to_one_null', 'custom_columns'] diff --git a/tests/testapp/models/custom_columns.py b/tests/testapp/models/custom_columns.py new file mode 100644 index 00000000000..c900091b641 --- /dev/null +++ b/tests/testapp/models/custom_columns.py @@ -0,0 +1,53 @@ +""" +17. Custom column names + +If your database column name is different than your model attribute, use the +``db_column`` parameter. Note that you'll use the field's name, not its column +name, in API usage. +""" + +from django.core import meta + +class Person(meta.Model): + first_name = meta.CharField(maxlength=30, db_column='firstname') + last_name = meta.CharField(maxlength=30, db_column='last') + + def __repr__(self): + return '%s %s' % (self.first_name, self.last_name) + +API_TESTS = """ +# Create a Person. +>>> p = persons.Person(first_name='John', last_name='Smith') +>>> p.save() + +>>> p.id +1 + +>>> persons.get_list() +[John Smith] + +>>> persons.get_list(first_name__exact='John') +[John Smith] + +>>> persons.get_object(first_name__exact='John') +John Smith + +>>> persons.get_list(firstname__exact='John') +Traceback (most recent call last): + ... +TypeError: got unexpected keyword argument 'firstname__exact' + +>>> p = persons.get_object(last_name__exact='Smith') +>>> p.first_name +'John' +>>> p.last_name +'Smith' +>>> p.firstname +Traceback (most recent call last): + ... +AttributeError: 'Person' object has no attribute 'firstname' +>>> p.last +Traceback (most recent call last): + ... +AttributeError: 'Person' object has no attribute 'last' +"""