This worked for me with your current datamodel:
taskObject = db.Query(Task).get()
for item in taskObject.tasklabel_set:
item.label.name
Or you could remove the Label class and just do a one-to-many relationship between Task and TaskLabel:
class Task(db.Model):
title = db.StringProperty()
class TaskLabel(db.Model):
task = db.ReferenceProperty(Task)
label = db.StringProperty()
Then
taskObject = db.Query(Task).get()
for item in taskObject.tasklabel_set:
item.label
Here is a tip from the Google article on modeling relationships in the datastore
By defining it as a ReferenceProperty, you have created a property that can only be assigned values of type 'Task'. Every time you define a reference property, it creates an implicit collection property on the referenced class. By default, this collection is called _set. In this case, it would make a property Task.tasklabel_set.
The article can be found here.
I also recommend playing around with this code in the interactive console on the dev appserver.