title: How to get rid of _BaseValue
body: <p>I'm using my own subclasses of ndb properties so I can add my own properties to them.
  When I retrieve data stored in the ndb, I often (not always) retrieve the data in a _BaseValue wrapper. How can I avoid the returning of _BaseValues?<br>
  Currently when I want to use the data I have to pass it to a function to get the b_val first.</p>
  
  <p>Request arguments</p>
  
  <pre><code>INFO     2013-02-01 08:15:05,834 debug.py:24] discount_application          
  INFO     2013-02-01 08:15:05,835 debug.py:24] url_name                      10
  INFO     2013-02-01 08:15:05,835 debug.py:24] name                          10%
  INFO     2013-02-01 08:15:05,835 debug.py:24] discount.amount               10
  INFO     2013-02-01 08:15:05,835 debug.py:24] discount_type                 discount
  INFO     2013-02-01 08:15:05,836 debug.py:24] free_text_discount            
  INFO     2013-02-01 08:15:05,836 debug.py:24] discount.currency             euro
  </code></pre>
  
  <p>Data received from datastore using printed using custom function</p>
  
  <pre><code>created                       _BaseValue(datetime.datetime(2013, 1, 31, 10, 41, 6, 757020))
  updated                       _BaseValue(datetime.datetime(2013, 2, 1, 8, 13, 34, 924218))
  name                          _BaseValue('10%')
  active                        _BaseValue(True)
  name_lower                    _BaseValue('10%')
  url_name                      _BaseValue('10_')
  discount_type                 _BaseValue('free_text_discount')
  discount                      _BaseValue(Discount(amount=0, currency=u'euro'))
  free_text_discount            _BaseValue('Krijg nu 10% korting')
  discount_application          _BaseValue(' ')
  </code></pre>
  
  <p>Data after parsing the request arguments</p>
  
  <pre><code>created                       2013-01-31 10:41:06.757020
  updated                       2013-02-01 08:13:34.924218
  name                          u'10%'
  active                        True
  name_lower                    u'10%'
  url_name                      u'10_'
  discount_type                 u'discount'
  discount                      Discount(amount=1000, currency=u'euro')
  free_text_discount            u''
  discount_application          u' '
  </code></pre>
  
  <p>As far as I can tell the way the data is stored the way I want or not randomly.
  Data after receiving the same instance after putting is shown below. Also the data after putting is shown as discount.discount.amount and discount.discount.currency instead of just discount.amount and discount.currency</p>
  
  <pre><code>created                       _BaseValue(datetime.datetime(2013, 1, 16, 14, 29, 52, 457230))
  updated                       _BaseValue(datetime.datetime(2013, 2, 1, 8, 14, 29, 329138))
  name                          _BaseValue('20%')
  active                        _BaseValue(True)
  name_lower                    _BaseValue('20%')
  url_name                      u'20_'
  discount_type                 _BaseValue('discount')
  discount                      _BaseValue(Discount(discount=Expando(amount=2000L, currency='percent')))
  free_text_discount            _BaseValue(' ')
  discount_application          _BaseValue('')
  </code></pre>
  
  <p>Action looks like this</p>
  
  <pre><code># BaseModel has some default properties and inherits from CleanModel
  class Action(BaseModel):
      _verbose_name = _("Action")
      max_create_gid = gid.ADMIN
      max_list_gid = gid.ADMIN
      max_delete_gid = gid.ADMIN
  
      # And some additional irrelevant properties
      # properties is a module containing custom properties,
      # which have some additional properties and functions
      discount = properties.StructuredProperty(Discount,
              html_input_type="small_structure",
              verbose_name=_("Discount"),
              help_message=_("Set a minimum discount of 10%% or € 1,00"),
              max_edit_gid=gid.ADMIN)
  
      def validate(self, original=None):
          return {}
  </code></pre>
  
  <p>And discount looks like this</p>
  
  <pre><code># CleanModel has some irrelevant functions and inherits from ndb.Model
  class Discount(common_models.CleanModel):
      amount = EuroMoney.amount.update(
              verbose_name=_("Discount"))
      currency = EuroMoney.currency.update(
              choice_dict=cp_dict(EuroMoney.currency._choice_dict,
                                              updates={CURRENCY_PERCENT: "%%"}),
              max_edit_gid=gid.ADMIN)
  </code></pre>