thirdparty/google_appengine/lib/django/tests/modeltests/properties/models.py
author Lennard de Rijk <ljvderijk@gmail.com>
Sat, 04 Jul 2009 15:16:54 +0200
changeset 2532 0b4dbe4b3fb7
parent 109 620f9b141567
permissions -rwxr-xr-x
Fixed showing the correct list of projects for taking a Grading Project Survey. Note that when a user is a mentor for a lot of Organizations the amount of subqueries might exceed the allowed amount. A TODO has been added to fix this issue. However this will hopefully not be a problem that pops up soon. Also some minor docstring addition to Project Survey view.

"""
22. Using properties on models

Use properties on models just like on any other Python object.
"""

from django.db import models

class Person(models.Model):
    first_name = models.CharField(maxlength=30)
    last_name = models.CharField(maxlength=30)

    def _get_full_name(self):
        return "%s %s" % (self.first_name, self.last_name)

    def _set_full_name(self, combined_name):
        self.first_name, self.last_name = combined_name.split(' ', 1)

    full_name = property(_get_full_name)

    full_name_2 = property(_get_full_name, _set_full_name)

__test__ = {'API_TESTS':"""
>>> a = Person(first_name='John', last_name='Lennon')
>>> a.save()
>>> a.full_name
'John Lennon'

# The "full_name" property hasn't provided a "set" method.
>>> a.full_name = 'Paul McCartney'
Traceback (most recent call last):
    ...
AttributeError: can't set attribute

# But "full_name_2" has, and it can be used to initialise the class.
>>> a2 = Person(full_name_2 = 'Paul McCartney')
>>> a2.save()
>>> a2.first_name
'Paul'
"""}