Serializando objetos de chave estrangeira no Django

Eu tenho trabalhado no desenvolvimento de alguns serviços RESTful no Django para serem usados com aplicativos Flash e Android.

O desenvolvimento da interface de serviços tem sido bastante simples, mas estou enfrentando um problema com a serialização de objetos com chave estrangeira e muitos e muitos relacionamentos.

Eu tenho um modelo como este:

class Artifact( models.Model ):
    name                = models.CharField( max_length = 255 )
    year_of_origin      = models.IntegerField( max_length = 4, blank = True, null = True )
    object_type         = models.ForeignKey( ObjectType, blank = True, null = True )
    individual          = models.ForeignKey( Individual, blank = True, null = True )
    notes               = models.TextField( blank = True, null = True )

Então, eu faria uma consulta nesse modelo assim, usandoselect_related(), para garantir que os relacionamentos de chave estrangeira sejam seguidos:

artifact = Artifact.objects.select_related().get(pk=pk)

Depois de ter o objeto, serializo-o e transmito-o de volta à minha visão:

serializers.serialize( "json", [ artifact ] )

É isso que eu volto, observe que as chaves estrangeiras (object_type e individual) são apenas os IDs dos objetos relacionados.

[
      {
            pk: 1
            model: "artifacts.artifact"
            fields: {
                year_of_origin: 2010
                name: "Dummy Title"
                notes: ""
                object_type: 1
                individual: 1
            }
      }
]

Isso é ótimo, mas o que eu esperava ao usarselect_related() era que ele preenchia automaticamente os campos de chave estrangeira com o objeto relacionado, não apenas o ID do objeto.

Sou recém-convertido para Django, mas dedico bastante tempo ao desenvolvimento com o CakePHP.

O que eu realmente gosto no Cake ORM é que ele segue os relacionamentos e cria objetos aninhados por padrão, com a capacidade de desvincular os relacionamentos quando você chamava sua consulta.

Isso facilitou a abstração dos serviços de uma maneira que não exigia nenhuma intervenção caso a caso.

Vejo que o Django não faz isso por padrão, mas existe uma maneira de serializar automaticamente um objeto e todos os objetos relacionados? Qualquer dica ou leitura seria muito apreciada.

questionAnswers(5)

yourAnswerToTheQuestion