diff --git a/tests/testapp/models/__init__.py b/tests/testapp/models/__init__.py index a5a41035d6..0010eeef24 100644 --- a/tests/testapp/models/__init__.py +++ b/tests/testapp/models/__init__.py @@ -2,4 +2,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', 'custom_columns', 'reserved_names', - 'or_lookups', 'm2m_multiple'] + 'or_lookups', 'm2m_multiple', 'choices'] diff --git a/tests/testapp/models/choices.py b/tests/testapp/models/choices.py new file mode 100644 index 0000000000..6352682a6a --- /dev/null +++ b/tests/testapp/models/choices.py @@ -0,0 +1,39 @@ +""" +21. Specifying 'choices' for a field + +Most fields take a ``choices`` parameter, which should be a tuple of tuples +specifying which are the valid values for that field. + +For each field that has ``choices``, a model instance gets a +``get_fieldname_display()`` method, where ``fieldname`` is the name of the +field. This method returns the "human-readable" value of the field. +""" + +from django.core import meta + +GENDER_CHOICES = ( + ('M', 'Male'), + ('F', 'Female'), +) + +class Person(meta.Model): + name = meta.CharField(maxlength=20) + gender = meta.CharField(maxlength=1, choices=GENDER_CHOICES) + + def __repr__(self): + return self.name + +API_TESTS = """ +>>> a = Person(name='Adrian', gender='M') +>>> a.save() +>>> s = Person(name='Sara', gender='F') +>>> s.save() +>>> a.gender +'M' +>>> s.gender +'F' +>>> a.get_gender_display() +'Male' +>>> s.get_gender_display() +'Female' +"""