code: def add_value(self, key, value):
          
          if key in self:
              # We already have this key on the item.
              if not isinstance(self[key], list):
                  # The key isn't already a list, take its current value and
                  # convert it to a list with the only member being the
                  # current value.
                  self[key] = [self[key]]
              # Add the new value to the list.
              self[key].append(value)
          else:
              # This is a new attribute, just set it.
              self[key] = value
docs: Helps set or add to attributes on this item. If you are adding a new
          attribute that has yet to be set, it will simply create an attribute
          named ``key`` with your given ``value`` as its value. If you are
          adding a value to an existing attribute, this method will convert the
          attribute to a list (if it isn't already) and append your new value 
          to said list.
          
          For clarification, consider the following interactive session:
          
          .. code-block:: python
  
              >>> item = some_domain.get_item('some_item')
              >>> item.has_key('some_attr')
              False
              >>> item.add_value('some_attr', 1)
              >>> item['some_attr']
              1
              >>> item.add_value('some_attr', 2)
              >>> item['some_attr']
              [1, 2]
          
          :param str key: The attribute to add a value to.
          :param object value: The value to set or append to the attribute.