Existe uma maneira de fazer apenas uma consulta de uma superclasse e obter uma lista de todas as respectivas subclasses no Django?[duplicado]

StackOverflow https://stackoverflow.com//questions/9674046

Pergunta

Possível duplicata:
Herança do modelo Django consulta uma tabela central

Seguindo os documentos oficiais encontrados aqui
https://docs.djangoproject.com/en/dev/topics/db/models/#multi-table-inheritance

Vejo que posso consultar um local que é um Super of Restaurant via

p = Place.objects.filter(name="Bob's Cafe")

Então, nesse ponto, existe uma maneira de verificar se os objetos retornados também são do tipo subclasse Restaurante e, em caso afirmativo, acessar seus campos de subclasse?

No momento, tudo o que posso dizer é que todos os objetos retornados são da classe Place e suas propriedades e métodos de subclasse não estão disponíveis, pois o objeto não está sendo convertido como sua subclasse.

Se essa metodologia não for possível, então qual é a melhor prática para tentar abstrair uma superclasse e minimizar a sobrecarga de consultas ao tentar obter uma lista contendo todos os modelos de subclasse?Entendo que, em teoria, eu poderia fazer uma consulta de cada subclasse e depois combinar a lista, mas teria que fazer mais se quisesse ordenar essa lista por, digamos, uma data.

Foi útil?

Solução

Então, nesse ponto, existe uma maneira de verificar se os objetos retornados também são do tipo subclasse Restaurante e, em caso afirmativo, acessar seus campos de subclasse?

Se você consultou o modelo Place, os objetos retornados serão instâncias Place que não têm conhecimento de nenhuma subclasse associada ao MTI.Você precisa fornecer um campo na superclasse para vincular à subclasse.Ver Tornando genérico um design de herança de múltiplas tabelas no Django

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top