Searching on the documentation provided by google and browsing SO I haven’t found a way to retrieve the choices set on a db.Property object (I want to retrieve it in order to create forms based on the model).
I’m using the following recipe to do what I need, Is this correct? Is there any other way of doing it? (simpler, more elegant, more pythonic, etc.)
For a model like this:
class PhoneNumber(db.Model):
contact = db.ReferenceProperty(Contact,
collection_name='phone_numbers')
phone_type = db.StringProperty(choices=('home', 'work'))
number = db.PhoneNumberProperty()
I do the following modification:
class PhoneNumber(db.Model):
_phone_types = ('home', 'work')
contact = db.ReferenceProperty(Contact,
collection_name='phone_numbers')
phone_type = db.StringProperty(choices=_phone_types)
number = db.PhoneNumberProperty()
@classmethod
def get_phone_types(self):
return self._phone_types
You should be able to use
PhoneNumber.phone_type.choices. If you want you could make that into a class method too:You can decide if you prefer the class method approach or not.
Don’t forget about Python’s dir built-in! It is very useful when exploring objects.