Pergunta

Eu tenho 2 modelos existentes que eu preciso participar que não são relacionais (sem chaves estrangeiras).Estes foram escritos por outros desenvolvedores não podem ser modificados por mim.

Aqui está uma descrição rápida deles:

Processo de modelo

  • filename de campo
  • caminho de campo
  • Field SoneyElse
  • barra de campo

    Modelo Service

    • filename de campo
    • caminho de campo
    • servicename de campo
    • field foo

      Preciso participar de todas as instâncias desses dois modelos nas colunas do nome do arquivo e do caminho.Eu tenho filtros existentes Eu tenho que aplicar a cada um deles antes que esta participação ocorra.

      Exemplo:

      a= processo.Objects.filter (mais sombra= 231)

      b= service.objects.filter (foo= 'abc')

      Result= A.Filter (nome do arquivo= b.fileename, path= b.path)

Foi útil?

Solução

Isso é uma droga, mas sua melhor aposta é iterar todos os modelos de um tipo e emitir consultas para obter seus modelos unidos para o outro tipo.

A outra alternativa é executar uma consulta SQL RAW para executar essas uniões e recuperar os IDs para cada objeto do modelo e, em seguida, recuperar cada par unido com base nisso.Mais eficiente em tempo de execução, mas precisará ser mantido manualmente se o seu esquema evolui.

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