Хорошо, так что я наконец-то заработал после отладки через emitters.py и заметил, как он использует свойство 'fields' обработчика для итерации полей модели.
Это мои модели:
class Building(models.Model):
address = models.CharField(max_length=255)
def __unicode__(self):
return self.address
class BuildingArea(models.Model):
display_name = models.CharField(max_length=30)
building = models.ForeignKey(Building, related_name='areas')
def __unicode__(self):
return self.display_name
Вот так выглядит мой BuildingHandler:
class BuildingHandler(BaseHandler):
allowed_methods = ('GET',)
fields = ('address', ('areas', ('display_name',),),)
model = Building
def read(self, name=None):
return self.model.objects.all()
Здесь важно отметить, что emmitters.py будет активировать определенные пути кода только в том случае, если текущим определением поля является набор или список. Я забыл добавить завершающий «,» к наборам, используемым для определения полей, и это заставило Piston заставить Python возвращать набор, состоящий из символов, содержащихся в строке «display_name», а не набор, содержащий строку « отображаемое имя'. Я надеюсь, что это имело смысл, Google 'Python одиночная конечная запятая' для получения дополнительной информации.
Надеюсь, это поможет кому-то еще! : D